有关 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

有关 TreeView.SelectedItem 可绑定性的 MSDN 文档

SelectedItem 只是对当前选定项目的引用。您需要定义 SelectedItemPath 和 DisplayMemberPath 的属性,然后通过 ItemsSource 将 TreeView 绑定到集合。喜欢这个:

<TreeView ItemsSource="{Binding MyCollection}" DisplayMemberPath="Name" SelectedValuePath="Id" />

DisplayMemberPath - 哪个属性将显示在 GUI 控件上(即。客户名称(SelectedValuePath - 哪个属性将是所选项的值(通常为 ID(

编辑:只是想指向SelectedItem中的"get"only属性