如何在 MVVM Light WPF C# 中动态更改树视图项选择上的用户控件(无需在视图中硬编码树视图选择事件)



我正在使用MVVM Light,我有一个简单的问题。我想动态更改 TreeViewItem 选择上的用户控件(由主窗口上的内容控件托管)。


已完成的工作

我在 MainViewModel 中创建了一个属性,用于跟踪当前选定的 ViewModel。

private ViewModelBase currentviewmodel;
readonly static ViewModel1 VM1 = new ViewModel1();
readonly static ViewModel2 VM2 = new ViewModel2();
public ViewModelBase CurrentViewModel
{
   get
   {
      return currentviewmodel;
   }
   set
   {
      if (currentviewmodel != value)
      {
         currentviewmodel = value;
         RaisePropertyChanged("CurrentViewModel");
      }
   }
}       

我还在相应视图模型的Windows.Resource中创建了一个数据模板,以更改选择时的用户控件

<DataTemplate DataType="{x:Type ViewModel1}" >
            <Tu:View1/>
        </DataTemplate>
        <DataTemplate DataType="{x:Type ViewModel2}" >
            <Tu:View2 />
        </DataTemplate>

现在唯一的问题是我应该如何对树视图中的 CurrentViewModel 属性进行数据绑定,以便内容控件中的用户控件发生变化???


编辑

Windows.resource 中的 HDT

 <HierarchicalDataTemplate ItemsSource="{Binding list}" DataType="{x:Type th:Tu}">
        <StackPanel Orientation="Horizontal">
            <Label Content="{Binding list}"/>
        </StackPanel>
    </HierarchicalDataTemplate>

<TreeView Name="Tree" Background="#FF808080" Margin="0" ItemsSource="{Binding Tubelist}" />

树视图绑定到名称列表。这些名称对应于用户控件,我想要的是,在树视图中选择该名称时,应选择相应的用户控件。

如果你有数据绑定TreeView,你可以只ContentControl.Content绑定到它的SelectedItem

<ContentControl Content="{Binding SelectedItem, ElementName=myTreeView}"/>

因此,您甚至不需要CurrentViewModel财产。

最新更新