Wpf 基于选定的树视图项切换视图

Wpf 基于选定的树视图项切换视图,wpf,treeview,treeviewitem,Wpf,Treeview,Treeviewitem,我有一个Shell.xaml文件,其中包含两个其他用户控件。左边是我的树视图,右边是详细信息屏幕 我希望Detail屏幕可以根据选定的TreeView项目进行切换。我知道这可以通过使用DataTemplates来实现,因为我通过简单的按钮点击和使用标记来实现,但我不知道如何基于选定的TreeItem实现这一点。我还有一个单独的ViewModel类用于我的UserControl,它保存我的TreeView,每个细节屏幕都有一个单独的ViewModel类 我一直在使用Josh Smith关于Tree

我有一个Shell.xaml文件,其中包含两个其他用户控件。左边是我的树视图,右边是详细信息屏幕

我希望Detail屏幕可以根据选定的TreeView项目进行切换。我知道这可以通过使用DataTemplates来实现,因为我通过简单的按钮点击和使用
标记来实现,但我不知道如何基于选定的TreeItem实现这一点。我还有一个单独的ViewModel类用于我的UserControl,它保存我的TreeView,每个细节屏幕都有一个单独的ViewModel类

我一直在使用Josh Smith关于TreeView的教程:

所以我也使用了他的TreeViewModel.cs类

有人能解释一下吗

谢谢


如果treeview和details都显示相同的对象(即treeview的ItemsSource包含要在自定义控件中作为数据模板的对象),则授予然后,您应该能够在两个控件共享的基础ViewModel上设置属性,并让自定义控件显示与数据模板相关的内容

例如,在ViewModel中:

object TreeViewSelectedItem
{
    get{ return _treeViewSelectedItem;}
    set {_treeViewSelectedItem = value; NotifyPropertyChanged("TreeViewSelectedItem");}
}
Treeview xaml

<TreeView ... SelectedItem={Binding TreeViewSelectedItem Mode=OneWayToSource}".../>

如果treeview和details都显示相同的对象(即treeview的ItemsSource包含要在自定义控件中使用数据模板的对象)然后,您应该能够在两个控件共享的基础ViewModel上设置属性,并让自定义控件显示与数据模板相关的内容

例如,在ViewModel中:

object TreeViewSelectedItem
{
    get{ return _treeViewSelectedItem;}
    set {_treeViewSelectedItem = value; NotifyPropertyChanged("TreeViewSelectedItem");}
}
Treeview xaml

<TreeView ... SelectedItem={Binding TreeViewSelectedItem Mode=OneWayToSource}".../>


Yes,我想在dededetailscreen中显示selecteditem,因为树只显示其名称,所以detailscreen应该显示所选树项目的更多数据。我找不到我的treeview的SelectedItem属性。SelectedItem看起来是只读的,无法绑定-这会扼杀我的答案:-(您仍然可以通过在树视图代码中为SelectedItemChanged事件放置一个处理程序,然后从那里插入视图模型属性来完成相同的任务。。。。(DataContext作为ViewModelType).TreeViewSelectedItem=Treeviewcontrol.selecteditem是的,我想在de Detail屏幕中显示selecteditem,因为树只显示其名称,Detail屏幕应该显示所选treeviewitem的更多数据。我找不到我的treeview的selecteditem属性。selecteditem看起来是只读的,不能绑定-哪种类型的kills my Response:-(您仍然可以通过在SelectedItemChanged事件的树视图代码中放置一个处理程序来完成相同的任务,然后从那里插入视图模型属性…(DataContext作为ViewModelType)。TreeViewSelectedItem=Treeviewcontrol.SelectedItem