WPF:如何丢弃所有继承的样式?

时间:2010-01-26 07:23:36

标签: wpf styles

如何告诉控件或控件块不继承任何样式并恢复为默认值?

我需要这个,因为我的整体主题大部分都有效,但是一件作品真的搞砸了我的设计。

2 个答案:

答案 0 :(得分:20)

您可以为相关的UI片段创建自己的容器,并将InheritanceBehavior设置为SkipAllNow(或适合您情况的值):

using System.Windows;
using System.Windows.Controls;

public class NoInheritanceContentControl : ContentControl
{
    public NoInheritanceContentControl()
    {
        InheritanceBehavior = InheritanceBehavior.SkipAllNow;
    }
}

然后您可以将NoInheritanceContentControl粘贴在可视树中,其中的任何内容都不会继承样式。

答案 1 :(得分:2)

这很棘手,但你可以试试这个,

  1. 创建DefaultStyles资源字典
  2. 创建要保留默认样式的控件的命名样式,如下所示。

    <Style 
        x:Key="DefaultButtonStyle" 
        TargetType="{x:Type Button}"  
        BasedOn="{StaticResource {x:Type Button}}"/>
    
  3. 确保在应用任何主题之前添加此DefaultStyles,它应该是您的应用资源中的第一个条目。

  4. 然后,您可以在运行时将样式“DefaultButtonStyle”应用于任何控件以保留其默认样式。