我知道我是个,但我很好奇,有没有办法制作自定义控件来先寻找它的基类风格,然后再寻找它自己的风格。 我为什么问:我有一些带有自定义项模板的 TreeView 派生控件。我应用这些模板,然后我有一个基本样式。稍后我可能会应用一些调色板。在最后一步,我有一个问题。我需要应用 2 种样式。PVStructuralTree派生自TreeView,它有一些DependencyProperty DataTemplates,这些模板入到代码中的资源中。
PV结构树视图
- 就业模板
- 。更多模板
PVStructuralTreeView 的默认样式:
<Style x:Key="DefaultPVStructuralTreeView" TargetType="{x:Type c:PVStructuralTreeView}" BasedOn="{StaticResource DefaultTreeView}">
<Setter Property="EmploeeTemplate"><!-- This get inserted inro Resources in code -->
<Setter.Value>
<DataTemplate DataType="{x:Type s:Emploee}">
...
</DataTemplate>
</Setter.Value>
</Setter>
... Lots of them here
</Style>
<Style TargetType="{x:Type c:PVStructuralTreeView}" BasedOn="{StaticResource DefaultPVStructuralTreeView}"/>
树视图的默认样式(它很大,所以我不会在这里发布(:
<Style TargetType="{x:Type TreeView}" BasedOn="{StaticResource DefaultTreeView}"/>
在颜色模板.xaml 文件中,我希望有这个 + 一些魔法来同时应用两种样式(来自 Generic.xaml 和主题(:
<Style x:Key="ThemedTreeView" TargetType="{x:Type TreeView}" BasedOn="{StaticResource DefaultTreeView}">
...
</Style>
<Style TargetType="{x:Type c:PVStructuralTreeView}" BasedOn="{StaticResource ThemedTreeView}"/>
但它只是覆盖了 generic.xaml 样式。我希望它添加到它。
现在我这样做:
<Style x:Key="ThemedPVStructuralTreeView" TargetType="{x:Type c:PVStructuralTreeView}" BasedOn="{StaticResource DefaultPVStructuralTreeView}">
... CopyPaste from ThemedTreeView ...
</Style>
<Style TargetType="{x:Type c:PVStructuralTreeView}" BasedOn="{StaticResource ThemedPVStructuralTreeView}"/>
有谁知道如何在这里重用主题树视图样式?
您可以将Style
基于另一个(仅一个!Style
使用BasedOn
属性并重写特定属性,但不能将DataTemplate
或ControlTemplate
基于其他模板。不支持此操作。模板必须定义为一个整体:
WPF:有没有办法在不重新定义整个样式的情况下重写控件模板的一部分?