是否可以进行DataTemplate
组合或继承(类似于样式中的“BasedOn”)?有 2 个实例我需要它。
对于继承类:我有一个带有多个继承类的基类。我不想在每个派生类的
DataTemplate
中重复基类模板。不同的 View :对于同一个类,我想定义一个数据模板,然后根据需要添加到该模板。前任。基本模板将显示对象中的数据,然后我想要不同的模板可以在显示数据时对对象执行不同的操作(继承基本模板)。
最佳答案
我发现做这种事情的唯一方法是:
<DataTemplate x:Key="BaseClass">
<!-- base class template here -->
</DataTemplate>
<DataTemplate DataType="{x:Type app:BaseClass}">
<ContentPresenter Content="{Binding}"
ContentTemplate="{StaticResource BaseClass}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type app:DerivedClass}">
<StackPanel>
<ContentPresenter Content="{Binding}"
ContentTemplate="{StaticResource BaseClass}"/>
<!-- derived class extra template here -->
</StackPanel>
</DataTemplate>
基本上,这创建了一个可以使用键(在本例中为 BaseClass)引用的“通用”模板。然后我们为基类和任何派生类定义真正的 DataTemplate。然后,派生类模板将添加它自己的“东西”。
msdn 上对此进行了一些讨论不久前,但没有人想出比我看到的更好的解决方案。
关于wpf - 有没有办法在 WPF 中使用数据模板继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4443600/