【问题标题】:Access from DataTemplate to another property从 DataTemplate 访问另一个属性
【发布时间】: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


【解决方案1】:

C_class 的 DataTemplate 仅适用于 C_class 类型的对象,并且如果在此类或其任何基类中未定义 IsAdditional 属性,则显然无法绑定到此类属性。

为了让C_class 能够知道A_class 中定义的任何属性,C_class 应该派生自A_class。

【讨论】:

  • 是的,我不得不在我的虚拟机中进行一些更改,这看起来不太好,但可以:)
猜你喜欢
  • 1970-01-01
  • 2011-07-12
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多