有关 TreeView.SelectedItem 可绑定性的 MSDN 文档
本文关键字:MSDN 文档 绑定 TreeView SelectedItem 有关 | 更新日期: 2023-09-27 18:09:21
似乎对于TreeView
,属性SelectedItem
不能用于绑定。我正在尝试了解这如何与 MSDN 文档保持一致。
在 https://msdn.microsoft.com/en-us/library/system.windows.controls.treeview.selecteditem.aspx 上,它说Treeview.SelectedItem
属性:
[BindableAttribute(true)] public object SelectedItem { get; }
然后,这个 https://msdn.microsoft.com/en-us/library/system.componentmodel.bindableattribute.aspx 在"备注"下说:
如果已将
BindableAttribute
标记为true
, 然后应该为此引发属性更改通知 财产。这意味着,如果Bindable
属性为Yes
,则 支持双向数据绑定。如果Bindable
No
,您仍然可以 绑定到属性,但它不应显示在默认的 要绑定到的属性,因为它可能会也可能不会引发属性 更改通知。
我将其读为"如果您的属性BindableAttribute
设置为 true
,您可以绑定到它;无论哪个值设置为 Bindable
." Bindable
没有列在SelectedItem
的[...]
部分中,我认为这意味着Bindable
设置为No
。
所以根据文档,绑定到SelectedItem
应该有效,对吧?还是我误解了什么?如果是,怎么办?
如果我写
<TreeView SelectedItem="{Binding foo, Mode=OneWayToSource}" />
它说"SelectedItem
属性没有可访问的二传手。(原文: "Die SelectedItem
-Eigenschaft" verfügt über kein Setter-Objekt, auf das zugegriffen werden kann.(
但现在我又感到困惑了——我告诉它只使用OneWayToSource
绑定,这意味着SelectedItem
的变化反映在foo
中,但反之则不然。那么,为什么它甚至关心二传手呢?请参阅 XAML 中的只读属性绑定 OneWayToSource 、将只读 GUI 属性推送回 ViewModel
SelectedItem 只是对当前选定项目的引用。您需要定义 SelectedItemPath 和 DisplayMemberPath 的属性,然后通过 ItemsSource 将 TreeView 绑定到集合。喜欢这个:
<TreeView ItemsSource="{Binding MyCollection}" DisplayMemberPath="Name" SelectedValuePath="Id" />
DisplayMemberPath - 哪个属性将显示在 GUI 控件上(即。客户名称(SelectedValuePath - 哪个属性将是所选项的值(通常为 ID(
编辑:只是想指向SelectedItem中的"get"only属性