WPF使用DataTemplate隐式选择模板,但在“列表”之外

seb*_*ebf 1 wpf binding datatemplate wpf-controls

在我的项目中,我有TreeView,其中包含一棵各种类型的对象的树(所有对象均来自同一父类)。

在我的TreeView的右侧,我希望有一个“面板”(目前只有一个网格),该面板显示有关树中当前所选对象的信息。我想使用DataTemplate,如本页第二个示例中所示,根据子类类型调整“面板”的布局和内容。但是,我找不到合适的容器(因为我不想使用列表控件-我想根据树视图中的选择更改一项的显示)。

这个问题问的是同一件事,但我认为答案不适合我,因为我希望模板根据类型动态更改。

即我希望有这样的东西:

<[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]>
Run Code Online (Sandbox Code Playgroud)

Rac*_*hel 5

用一个 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>
Run Code Online (Sandbox Code Playgroud)