如何在 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 中删除&lt;ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /&gt;,并明确设置您希望具有Material Design 外观的所有控件的Style 属性。

【讨论】:

【参考方案2】:

您可以像这样在 ResourceDict 中创建一个空样式:

<Window.Resources>
        <ResourceDictionary>
            <Style x:Key="styleless" />
        </ResourceDictionary>
</Window.Resources>

并将其分配给您的按钮,如下所示:

<Button Style="StaticResource styleless" />

【讨论】:

是的,这似乎有效。我将按钮样式设置为 null,如下所示:&lt;Button Style="x:Null"/&gt;,然后我认为可能有更好的方法来删除材料设计的默认样式。

以上是关于如何在 WPF 中禁用 Material Design 风格的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React 中禁用 Material UI 的日期选择器的下划线?

如何从日期数组中禁用 Angular Material Datepicker 日期?

如何在 WPF 中禁用按钮上的 MouseOver 效果?

如何禁用样式组件内material-ui按钮的悬停效果

如何在WPF ListBox中禁用水平滚动?

WPF:如何在不禁用箭头键导航的情况下禁用选项卡导航?