2017-05-17 4 views
-2

VM 클래스가 있는데 세 클래스 A, B 및 C가 있습니다.DataTemplate에서 다른 속성으로의 액세스

<DataTemplate DataType="{x:Type paper:B_class}"> 
     <InlineUIContainer> 
      <TextBlock Visibility="{Binding IsAdditional, Converter={StaticResource BoolToVisibilityConverter}}"> 
       <Run Text="X"/> 
      </TextBlock> 
     </InlineUIContainer> 
    </DataTemplate> 
+0

직면 한 오류 또는 문제는 무엇입니까? – Colwin

+0

구체적인 것에 만 바인딩 할 수 있습니다. 그렇다면 추상 클래스는 어디에서 인스턴스화됩니까? – AQuirky

+0

@AQuirky 추상 클래스는 VM 클래스에 있습니다. –

답변

1

: A.에서 파생 된 B는 내가 또한 B 클래스에서 DataTemplate을 선언 한 DataTemplate을 클래스 C.

<DataTemplate DataType="{x:Type paper:C_class}"> 
     <TextBlock Visibility="{Binding From, Converter={x:Static c:NullToCollapsedConverter.Instance}}"> 
       <Run Text="{Binding PropFromC_class, Converter={x:Static c:StationConverters.ShortName}, Mode=OneWay}" /> 
       <InlineUIContainer> 
    //No acces here for IsAdditional 
        <TextBlock Visibility="{Binding Path=IsAdditional, Converter={StaticResource BoolToVisibilityConverter}}" > 
         <Run Text="X" /> 
        </TextBlock> 
       </InlineUIContainer> 
      </TextBlock> 
    </DataTemplate> 

에서 추상 클래스 인 클래스 A에 IsAdditional라는 속성에 접근 할 필요가 C_class에 대한 DataTemplate은 유형이 C_class 인 개체에만 적용되고이 클래스 또는 해당 기본 클래스에 정의 된 IsAdditional 속성이없는 경우 분명 이러한 속성에 바인딩 할 수 없습니다. C_class를 들어

C_classA_class에서 파생한다 A_class에 정의 된 모든 속성을 알 수있다.

+0

Yeap, 내 VM에서 뭔가를 변경해야했습니다. 좋지는 않지만 작동합니다. :) –