如何在 WPF 中禁用 Material Design 风格
Posted
技术标签:
【中文标题】如何在 WPF 中禁用 Material Design 风格【英文标题】:How to Disable Material Design Style in WPF 【发布时间】:2021-06-27 17:28:03 【问题描述】:我正在使用Material Design in XAML 来设置我的 WPF UI 控件的样式。我在 App.xaml 文件中定义了默认主题。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
但是,我希望我的一些控件具有默认的 WPF 外观,但 XAML 中的 Material Design 似乎覆盖了 WPF 默认控件样式。
示例:下面的按钮会自动从 Material 设计中获取其样式,而无需指定它。
<Button Content="Hello" Width="100"/>
如何在某些控件中禁用 Material Design?
【问题讨论】:
【参考方案1】:将Style
属性设置为x:Null
使其回退到在框架程序集中实现的默认Style
:
<Button Content="Hello" Width="100" Style="x:Null" />
另一种选择是从您的App.xaml
中删除<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
,并明确设置您希望具有Material Design 外观的所有控件的Style
属性。
【讨论】:
【参考方案2】:您可以像这样在 ResourceDict 中创建一个空样式:
<Window.Resources>
<ResourceDictionary>
<Style x:Key="styleless" />
</ResourceDictionary>
</Window.Resources>
并将其分配给您的按钮,如下所示:
<Button Style="StaticResource styleless" />
【讨论】:
是的,这似乎有效。我将按钮样式设置为 null,如下所示:<Button Style="x:Null"/>
,然后我认为可能有更好的方法来删除材料设计的默认样式。以上是关于如何在 WPF 中禁用 Material Design 风格的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React 中禁用 Material UI 的日期选择器的下划线?