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