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}}" /" >
-
Удостоверьтесь, что этот DefaultStyles добавлен до применения любой из ваших тем, это должна быть первая запись в ваших ресурсах приложений.
-
Затем вы можете применить стиль "DefaultButtonStyle" к любому элементу управления во время выполнения, чтобы сохранить свой стиль по умолчанию.