0

MVVMパターンのTreeViewを構築します

-ルート --
アイテム
---サブアイテム

TreeViewItems のいずれかをクリックすると、実際のオブジェクト (モデル) の詳細を別のウィンドウに表示したいと思います。

しかし、オブジェクトのデータにアクセスする方法がわかりません。

private void TreeView_OnSelectedItemChanged(object sender, RoutedEventArgs e)
{
    TreeViewItem tvi = e.OriginalSource as TreeViewItem;
    MessageBox.Show(tvi.ToString());
}
4

4 に答える 4

4

私の以前の回答は、尋ねられたこと以上のものに対処することでした。

TreeViewItem のバインドされたオブジェクトの詳細を表示することにより、TreeView での選択の変更に対応したいので、Caliburn MicroActionメカニズムを使用できます。TreeViewのSelectedItemChangedイベントを ViewModel のメソッドに接続できます。

あなたのビューの例:

<TreeView 
    ItemsSource="{Binding YourDataObjects}"
    cal:Message.Attach="[Event SelectedItemChanged] = [Action OnSelectedItemChanged($this)]"/>

ViewModel には、次のメソッドがあります。

public void OnSelectedItemChanged(YourDataObject selectedItem)
{
    //Do something with the selected item here 
}

この設定に問題がある場合は、お知らせください。

于 2012-10-12T11:46:10.110 に答える
0

ViewModel で、TreeViewItem タイプの依存関係プロパティを作成し、View で TreeView の SelectedValuePath プロパティを新しい依存関係プロパティにバインドします。

于 2012-10-12T10:01:03.777 に答える
0

MVVM パターンでは、コントロールに関連付けられたデータは、DataContext依存関係プロパティにあると想定されています。

于 2012-10-12T11:18:55.840 に答える