如何进行基于类型(datacontext)的XAML绘图选择?

时间:2017-01-12 14:55:21

标签: wpf xaml

我正在使用HyerarchicalDataTemplate根据TreeViewItem的类型为DataContext提供适当的模板。

我有一个2级树视图:组 - >实体。现在,实体可以是不同类型的,我想在ResourceDictionary文件中为它们分配一个由简单的XAML表单构建的图标,具体取决于它们的类型,我找不到合适的方法来执行它

以下是我HierarchicalDataTemplate的预览:

<HierarchicalDataTemplate DataType="{x:Type local:EntityTreeViewModel}">
  <StackPanel Orientation="Horizontal">
    <CheckBox IsChecked="{Binding IsCheckSelected}" />
    <ContentControl DataContext="{Binding Entity}" Content="???" />
    <TextBlock Text="{Binding Entity.Name}" />
  </StackPanel>
</HierarchicalDataTemplate>

ContentControl是我想放置我的XAML图标的地方,但我已准备好使用任何其他可以完成这项工作的组件。

所以基本上:如何在XAML中显示一个图标构建,这取决于我的实体的类型,如  实体类型A - &gt; ICONA  实体类型B - &gt; IconB

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

试试这个:

<ContentControl Content="{Binding Entity}" xmlns:local="clr-namespace:WpfApplication1">
    <ContentControl.Resources>
        <DataTemplate DataType="{x:Type local:EntityA}">
            <Image Source="iconA.png" />
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:EntityB}">
            <Image Source="iconB.png" />
        </DataTemplate>
    </ContentControl.Resources>
</ContentControl>

EntityAEntityB派生自相同的Entity基类或实现相同的接口,并在命名空间WpfApplication1中定义。