私の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の背後にあるModelView内のオブジェクト)の一部である場合。2つの関連する質問があります:
- その宣言を可能にするものは何ですか?その振る舞いを可能にするひねりは何ですか?
- 「シンボル'IsExpandedOverridedInModelView'を解決できません」という〜"警告"を削除するためにそれを宣言する方法(クリーンな方法でそれを宣言する方法)?
TreeViewItemはDynamicObjectから派生すると思いましたが、そうではありません。