Wpf 如果多个匹配,则根据数据类型选择哪个数据模板

Wpf 如果多个匹配,则根据数据类型选择哪个数据模板,wpf,xaml,Wpf,Xaml,给定以下VM类层次结构 public abstract class BaseClass {} public class SubClass : BaseClass {} public class OtherSubClass : BaseClass {} 我想使用ContentPresenter根据DataContext的类型选择DataTemplate。它应该为子类选择一个模板,为基类的所有其他子类选择一个不同的模板。我使用以下实现: <ContentPresenter> <

给定以下VM类层次结构

public abstract class BaseClass {}
public class SubClass : BaseClass {}
public class OtherSubClass : BaseClass {}
我想使用ContentPresenter根据DataContext的类型选择DataTemplate。它应该为子类选择一个模板,为基类的所有其他子类选择一个不同的模板。我使用以下实现:

<ContentPresenter>
  <ContentPresenter.Resources>
    <DataTemplate DataType="{x:Type BaseClass}">
    ...
    </DataTemplate>
    <DataTemplate DataType="{x:Type SubClass}">
    ...
    </DataTemplate>
  </ContentPresenter.Resources>
</ContentPresenter>

...
...
这是可行的,但我不确定这个实现有多愚蠢


根据数据类型选择数据模板的规则是什么?我找了很多,但找不到答案。我可以想象使用了具有最特定匹配类型的数据模板,但如果我有证据证明这一点(它与数据模板的顺序或WPF的情绪等其他事情无关),我会感觉更好。

根据
FrameworkElement.FindTemplateResourceInternal的源代码,WPF将通过跟踪数据项的继承来搜索资源中的
DataTemplate