在我的项目中,我有TreeView,它包含各种类型的对象树(所有子类都来自同一个超类)。
在我的TreeView右侧,我希望有一个“面板”(目前我只有一个网格),它显示有关当前在树中选择的对象的信息。我想使用DataTemplate,就像在this page上的第二个例子一样,来调整布局&我的“面板”的内容基于子类型;但是,我找不到合适的容器(因为我不想要列表控件 - 我想根据树视图中的选择更改一个项目的显示)。
This question问同样的事情,但我不认为答案适合我,因为我希望模板根据类型动态变化。
即。我希望有类似的东西:
<[A Suitable Container] Margin="189,39,12,12" DataContext="{Binding ElementName=treeView1, Path=SelectedItem}">
<DataTemplate DataType="{x:Type local:subclass1}">
<Grid>
<!-- subclass1 specific stuff -->
</Grid>
</DataTemplate>
<DataTemplate DataType="{x:Type local:subclass2}">
<Grid>
<!-- subclass2 specific stuff -->
</Grid>
</DataTemplate>
</[A Suitable Container]>
答案 0 :(得分:4)
使用ContentControl
<ContentControl Content="{Binding ElementName=treeView1, Path=SelectedItem}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type local:ViewModelA}">
<local:ViewA />
</DataTemplate>
<DataTemplate DataType="{x:Type local:ViewModelB}">
<local:ViewB />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>