我正在使用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 回答
如果您有数据绑定
TreeView
,则可以将ContentControl.Content
绑定到其SelectedItem
:因此,您甚至不需要
CurrentViewModel
属性 .