【发布时间】:2019-03-26 20:35:00
【问题描述】:
给定以下 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 的情绪等其他东西无关)。
【问题讨论】: