如何告诉控件或控件块不继承任何样式并恢复为默认值?
我需要这个,因为我的整体主题大部分都有效,但是一件作品真的搞砸了我的设计。
答案 0 :(得分:20)
您可以为相关的UI片段创建自己的容器,并将InheritanceBehavior
设置为SkipAllNow
(或适合您情况的值):
using System.Windows;
using System.Windows.Controls;
public class NoInheritanceContentControl : ContentControl
{
public NoInheritanceContentControl()
{
InheritanceBehavior = InheritanceBehavior.SkipAllNow;
}
}
然后您可以将NoInheritanceContentControl
粘贴在可视树中,其中的任何内容都不会继承样式。
答案 1 :(得分:2)
这很棘手,但你可以试试这个,
创建要保留默认样式的控件的命名样式,如下所示。
<Style
x:Key="DefaultButtonStyle"
TargetType="{x:Type Button}"
BasedOn="{StaticResource {x:Type Button}}"/>
确保在应用任何主题之前添加此DefaultStyles,它应该是您的应用资源中的第一个条目。
然后,您可以在运行时将样式“DefaultButtonStyle”应用于任何控件以保留其默认样式。