给出以下VM类层次结构
public abstract class BaseClass {}
public class SubClass : BaseClass {}
public class OtherSubClass : BaseClass {}
我想使用ContentPresenter根据DataContext的类型选择一个DataTemplate。它应该为SubClass选择一个模板,为BaseClass的所有其他子类选择一个模板。我使用以下实现:
<ContentPresenter>
<ContentPresenter.Resources>
<DataTemplate DataType="{x:Type BaseClass}">
...
</DataTemplate>
<DataTemplate DataType="{x:Type SubClass}">
...
</DataTemplate>
</ContentPresenter.Resources>
</ContentPresenter>
这行得通,但是我不确定这种实现有多么愚蠢。
根据DataType选择DataTemplate的规则是什么?我进行了很多搜索,但找不到答案。我可以想象使用了具有最特定匹配类型的数据模板,但是如果我对此有证据,我会感觉更好(它与诸如DataTemplates的顺序或WPF的心情无关)。