2016-09-29 2 views
0

Похоже, что для 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, вы можете привязать к нему, независимо от того, который никакого значения не установлен в BindableBindable нет в таблице [...] для SelectedItem, что я предполагаю, что Bindable установлено на No.

Соответственно, в соответствии с документацией обязательна работа по связыванию с SelectedItem, верно? Или я что-то не понимаю? Если да, то что?

Если я пишу

<TreeView SelectedItem="{Binding foo, Mode=OneWayToSource}" /> 

он говорит: "Свойство SelectedItem не имеет доступный сеттер." (Оригинал: «Die SelectedItem -Eigenschaft» verfügt über Kein сеттер-Objekt, Ауф дас zugegriffen Werden канн.)

Но теперь я смущен снова - я сказал это, чтобы использовать только OneWayToSource связывания, а это означает, что изменения SelectedItem отражают в foo, но не наоборот. Итак, почему он даже заботится о сеттере? см. OneWayToSource binding from readonly property in XAML, Pushing read-only GUI properties back into ViewModel

ответ

0

SelectedItem - это только ссылка на выбранный товар. Вам необходимо определить свойство SelectedItemPath и DisplayMemberPath, а затем привязать TreeView к коллекции через ItemsSource. Как это:

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

DisplayMemberPath - какое свойство будет показано на управление GUI SelectedValuePath - какое свойство будет значение выбранного элемента (обычно ID)

Edit (т.е. имя заказчика.): Просто хотел указать на свойство «получить» только в SelectedItem

Смежные вопросы