在我的 xaml 中,我有一些看起来像:
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding Path=IsExpandedOverridedInModelView, Mode=TwoWay}"/>
</Style>
</TreeView.ItemContainerStyle>
此代码完美运行。
我的 TreeView 绑定到包装我的 DataLayer 层次结构的 ModelView 层次结构 (MVVM)。另一个层次结构上的层次结构包装器。我的有界 ModelView 层次结构添加了一些属性,例如(IsSelected 和 IsExpandedOverridedInModelView)。此代码主要确实定义了 TreeView.IsExpanded 属性和我的 ModelView 层次结构属性之间的绑定:“IsExpandedOverridedInModelView”。
但是有一点我一直想不通...
每个人都知道 TreeViewItem 类没有名为“IsExpandedOverridedInModelView”的属性。此属性是我的基础对象的一部分(我的模型视图中的对象在 TreeViewItem 后面)。我有两个相关的问题:
- 什么会使该声明成为可能?促成这种行为的转折点是什么?
- 如何声明以删除〜“警告”说“无法解析符号'IsExpandedOverridedInModelView'”(如何以干净的方式声明)?
我认为 TreeViewItem 将派生自 DynamicObject 但事实并非如此。