我正在使用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
<DataTemplate DataType="{x:Type ViewModel1}" >
<Tu:View1/>
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModel2}" >
<Tu:View2 />
</DataTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding list}" DataType="{x:Type th:Tu}">
<StackPanel Orientation="Horizontal">
<Label Content="{Binding list}"/>
</StackPanel>
</HierarchicalDataTemplate>
树视图绑定到名称列表。这个名称对应于UserControl,我想要的是在树视图中选择那些名称时应该选择相应的用户控件。
答案 0 :(得分:0)
如果您有数据绑定TreeView
,则可以将ContentControl.Content
绑定到其SelectedItem
:
<ContentControl Content="{Binding SelectedItem, ElementName=myTreeView}"/>
因此,您甚至不需要CurrentViewModel
属性。