假设有以下虚拟机类继承关系
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 的心情无关)。