【发布时间】:2017-10-17 03:15:15
【问题描述】:
我有VM类,A、B、C三个类在哪里; B 派生自 A。我需要访问 A 类中名为 IsAdditional 的属性,该属性是 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>
我也从 B 类声明了 DataTemplate:
<DataTemplate DataType="{x:Type paper:B_class}">
<InlineUIContainer>
<TextBlock Visibility="{Binding IsAdditional, Converter={StaticResource BoolToVisibilityConverter}}">
<Run Text="X"/>
</TextBlock>
</InlineUIContainer>
</DataTemplate>
【问题讨论】:
-
您遇到的错误或问题是什么?
-
你只能绑定到具体的东西。那么你的抽象类是在哪里实例化的呢?
-
@AQuirky 抽象类在 VM 类中。
-
@Colwin 我无法从 C_class 模板访问 IsAdditional 属性。
-
C_class 的 DataTemplate 仅适用于 C_class 类型的对象,如果在此类或其任何基类中未定义 IsAdditional 属性,则显然无法绑定到此类属性。为了让 C 能够知道在 A 中定义的任何属性,C 应该派生自 A。
标签: .net wpf xaml data-binding