2016-09-29 24 views
0

看起來對於TreeView,屬性SelectedItem不能用於綁定。我想了解這可以如何與MSDN文檔一致。有關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,那麼支持雙向數據綁定 。如果BindableNo,您仍然可以將 綁定到該屬性,但它不應顯示在要綁定的默認屬性 屬性中,因爲它可能會或可能不會引發屬性 更改通知。

我把它讀作「如果你的酒店BindableAttribute設置爲true,可以綁定到它,無論哪個值設置爲Bindable」。 Bindable沒有列在SelectedItem[...]部分中,我假設這意味着Bindable設置爲No

因此,根據文件,綁定到SelectedItem應該工作,對吧?還是我誤解了一些東西?如果是,什麼?

如果我寫

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

它說: 「該SelectedItem屬性不具有可訪問的制定者。」 (原文:「死SelectedItem -Eigenschaft」verfügt尤伯杯KEIN二傳手-OBJEKT,奧夫DAS zugegriffen werden卡恩。)

但現在我再次感到困惑 - 我告訴它只能使用OneWayToSource結合,這意味着的SelectedItem變化反映在foo,但不是相反。所以爲什麼它甚至關心二傳手?參見OneWayToSource binding from readonly property in XAML,Pushing read-only GUI properties back into ViewModel

回答

0

SelectedItem只是對當前所選項目的引用。您需要定義SelectedItemPath和DisplayMemberPath的屬性,然後通過ItemsSource將TreeView綁定到集合。 像這樣:

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

的DisplayMemberPath - 哪個屬性將在GUI控制顯示被 SelectedValuePath - 哪個屬性將是選擇的項目(通常ID)

編輯的值(即客戶的名稱。):就想要指向SelectedItem中的「僅獲取」屬性