Похоже, что для TreeView
свойство SelectedItem
не может использоваться для привязки. Я пытаюсь понять, как это может быть совместимо с документацией MSDN.Документация MSDN по связыванию TreeView.SelectedItem
На 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 сеттер-Objekt, Ауф дас zugegriffen Werden канн.)
Но теперь я смущен снова - я сказал это, чтобы использовать только см. OneWayToSource binding from readonly property in XAML, Pushing read-only GUI properties back into ViewModelOneWayToSource
связывания, а это означает, что изменения SelectedItem
отражают в foo
, но не наоборот. Итак, почему он даже заботится о сеттере?