首页 文章

如何在MVVM Light WPF C#中的TreeViewItem选择上动态更改UserControl(不在视图中硬编码TreeView Selection事件)

提问于
浏览
0

我正在使用MVVM Light,我有一个简单的问题 . 我想在TreeViewItem选择上动态更改UserControl(由MainWindow上的Content Control托管) .


工作完成

我在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");
      }
   }
}

我还在相应ViewModel的Windows.Resource中创建了一个DataTemplate来更改选择的UserControl

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

现在唯一的问题是我应该如何在树视图中数据化CurrentViewModel属性,以便内容控件中的Usercontrol更改?


编辑

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}" />

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

1 回答

  • 0

    如果您有数据绑定 TreeView ,则可以将 ContentControl.Content 绑定到其 SelectedItem

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

    因此,您甚至不需要 CurrentViewModel 属性 .

相关问题