在我的xaml中,我有如下所示的内容:
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding Path=IsExpandedOverridedInModelView, Mode=TwoWay}"/>
</Style>
</TreeView.ItemContainerStyle>
此代码完美运行。
我的树视图绑定到包装我的数据层层次结构的模型视图层次结构 (MVVM)。另一个层次结构上的层次结构包装器。我的边界模型视图层次结构添加了一些属性,如(IsSelected和IsExpandedOverridedInModelView)。此代码主要定义了 TreeView.IsExpanded 属性和我的 ModelView 层次结构属性之间的绑定:"IsExpandedOverridedInModelView"。
但是有些事情我一直无法弄清楚...
每个人都知道 TreeViewItem 类没有名为"IsExpandedOverridedInModelView"的属性。此属性是我的基础对象(TreeViewItem 后面的模型视图中的对象)的一部分。我有两个相关问题:
- 是什么使这一宣言成为可能?是什么扭曲使这种行为?
- 如何声明以删除 ~"警告"说"无法解析符号'IsExpandedOverridedInModelView'"(如何以干净的方式声明)?
我以为TreeViewItem会派生自DynamicObject,但事实并非如此。
TreeViewItem
具有IsExpanded
属性。任何告诉您其他情况的警告都是一些 IDE 废话的结果。绑定是指可能具有也可能没有此类属性的DataContext
,除非您使用设计器,否则仅在运行时进行评估(同样,来自该属性的警告只是 IDE 废话)。