2016-09-29 9 views
0

TreeViewの場合、プロパティーSelectedItemはバインディングに使用できないようです。私はこれがMSDNのドキュメントとどのように矛盾しないかを理解しようとしています。 https://msdn.microsoft.com/en-us/library/system.windows.controls.treeview.selecteditem.aspxTreeView.SelectedItemのバインディングに関するMSDNのドキュメント

それはTreeview.SelectedItemプロパティについてこう述べています。

[BindableAttribute(true)] 
public object SelectedItem { get; } 

次に、このhttps://msdn.microsoft.com/en-us/library/system.componentmodel.bindableattribute.aspxは、 "備考" の下に書かれています:

プロパティはBindableAttributeセットでマークされている場合trueに、 に変更する必要があります。その場合は、 プロパティ。つまり、BindableプロパティがYesの場合は、 双方向データバインディングがサポートされます。 BindableNoの場合でも、プロパティには バインドすることができますが、プロパティを設定する場合としない場合があるので、バインドするプロパティのデフォルトセットには、 プロパティが表示されないようにしてください。

「あなたの財産はtrueBindableAttributeセットを持っている場合は、それに結合することができ、値がBindableに設定されているに関係なく。」と私はそれを読みますBindableは、SelectedItem[...]部分に記載されていません。これは、BindableNoに設定されていることを意味します。

ドキュメントによれば、SelectedItemへのバインディングは正しく動作するはずですか?または私は何かを誤解していますか?はいの場合、何ですか?私は

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

を書く場合

それは "SelectedItemプロパティにアクセスセッターを持っていません。" と言います(オリジナル:verfügtユーバーのKEINセッター-Objekt「SelectedItem -Eigenschaftダイ」、アウフダスzugegriffen werdenカン。)

しかし、今、私は再び混乱している - 私はSelectedItemの変更が反映されていることを意味し、結合OneWayToSourceを使用するだけにそれを告げましたfooでは、それ以外の方法ではありません。だからなぜセッターについて気にするのですか?OneWayToSource binding from readonly property in XAMLPushing read-only GUI properties back into ViewModel

答えて

0

SelectedItemは現在選択されている項目への参照です。 SelectedItemPathとDisplayMemberPathのプロパティを定義し、ItemsSource経由でTreeViewをコレクションにバインドする必要があります。ただ、: - - GUIコントロールに表示されますプロパティ(。すなわち、顧客の名前) SelectedValuePathプロパティは、選択した項目(通常はID)の値になります

編集

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

DisplayMemberPath:このように SelectedItemの "取得"プロパティを指したかった

関連する問題