1

在我的 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 但事实并非如此。

4

1 回答 1

3

TreeViewItem IsExpanded有财产_ _ 任何告诉您其他情况的警告都是某些 IDE 废话的结果。绑定指的是DataContext可能有也可能没有这样的属性,除非您使用设计器,否则仅在运行时评估该属性(同样,来自这些的警告只是 IDE 废话)。

于 2012-04-23T14:32:28.547 回答