如何访问TreeViewItem对象的数据

时间:2012-10-12 09:54:53

标签: c# wpf mvvm model treeviewitem

我使用

构建MVVM模式TreeView

-root
- 项目
---子项目

当点击任何TreeViewItem时,我想在一个单独的窗口中显示实际对象(模型)的细节。

但我不确定如何访问该对象的数据。

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

4 个答案:

答案 0 :(得分:4)

我不建议在TreeView_OnSelectedItemChanged样式MVVM应用中使用WPF

定义ModelView绑定到TreeeViewItem {{1}} {{1}}属性的绑定,并且总是知道选择,并且可以选择项目同样感兴趣的是代码。

答案 1 :(得分: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 
}

如果你在设置时遇到问题,请告诉我。

答案 2 :(得分:0)

在ViewModel中,创建一个TreeViewItem类型的依赖项属性,并在View中将TreeView的SelectedValuePath属性绑定到新的依赖项属性。

答案 3 :(得分:0)

在MVVM模式中,与控件关联的数据应该位于 DataContext 依赖项属性中。