重置继承的WPF样式?

10
在我的应用程序的App.xaml部分,我有一个ResourceDictionary元素,针对DataGridColumnHeaderDataGridCell等内容,并对它们应用自定义样式。这些定义是全局的(它们不使用x:key - 它们适用于该类型的所有实例)。
在我的应用程序子部分中是否可能完全重置这些类型的样式为“基本”的Aero主题(或当前使用的任何主题)?
我已经尝试使用
<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource {x:Type DataGridColumnHeader}}">
    </Style>

这似乎没有任何作用,我猜它只是继承了自己。

1个回答

16

重置样式有两种方法:

  1. 将元素的样式属性设置为{x:Null}。您需要在每个元素上执行此操作。

    <Button Height="50" Style="{x:Null}"></Button>
    
  2. 在包含您想要重置的元素的资源中定义一个空样式。不要指定BasedOn,否则它将继承所有属性并且不会将它们重置为标准值(正如您正确注意到的那样)。

  3. <Style TargetType="{x:Type DataGridColumnHeader}">
    </Style>
    

空值技巧似乎也适用于BasedOn,也就是说,您可以执行类似以下的操作:<Style TargetType="..." BasedOn="{x:Null}" 以重置为默认的WPF样式。 - Steven Rands

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接