WPF: Как удалить все унаследованные стили?

Как сообщить элементу управления или блоку элементов управления не наследовать какие-либо стили и вернуться к значениям по умолчанию?

Мне нужно это, потому что у меня есть общая тема, которая в основном работает, но для одной части действительно закручивает мой дизайн.

Ответы

Ответ 1

Вы можете создать свой собственный контейнер для части пользовательского интерфейса, и изменить InheritanceBehavior, чтобы вернуть SkipAllNow, или что-то еще наиболее подходящий для вашей ситуации:

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

Тогда вы можете просто вставить NoInheritanceContentControl в свое визуальное дерево, и все, что внутри него, не наследует стили.

Ответ 2

Это сложно, но вы можете попробовать это,

  • Создать словарь ресурсов DefaultStyles
  • Создайте именованные стили элемента управления, который вы хотите сохранить по умолчанию, как показано ниже.
<Style x:Key="DefaultButtonStyle" 

TargetType = "{x: Тип Button}" BasedOn = "{StaticResource {x: Тип Button}}" /" >

  1. Удостоверьтесь, что этот DefaultStyles добавлен до применения любой из ваших тем, это должна быть первая запись в ваших ресурсах приложений.

  2. Затем вы можете применить стиль "DefaultButtonStyle" к любому элементу управления во время выполнения, чтобы сохранить свой стиль по умолчанию.