我正在使用WPF Material Design,我必须在我的App.xaml中添加资源字典。这种方式应用于我的每个控件。
的App.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.PopupBox.xaml" />
<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>
我创建了UserControl,我想忽略MaterialDesign样式是否可能?
答案 0 :(得分:1)
当然,您有一些选择 - 您是否希望在一两种情况下覆盖Material Design?您可以使用该用户控件的键创建自己的样式。即使它实际上没有改变默认WPF控件中的任何内容,它仍应覆盖材质设计。
在所有情况下都希望覆盖特定的用户控件?同样的事情,创建一个没有密钥的样式并使用TargetType {x:Type {your control}}。这应该在所有情况下都超越材料设计。
无论哪种方式,我建议您使用自定义样式&#39; ResourceDictionary位于单独的Styles.xaml文件中,并将其添加到app.xaml文件中,就像使用Material Design样式一样。
答案 1 :(得分:0)
如果您在app.xaml中覆盖了<Style TargetType={x:Type Button}/>
之类的内容,并试图将其重置为Microsoft在特定页面上的样式,请使用Marco Zhou的excellent solution:
如果要应用luna主题,只需将主题字典合并到App.Resources下,如下所示:
<Application x:Class="WpfTestHarness.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="RenderNotificationDemo.xaml">
<Application.Resources>
<!--This is the relevant bit-->
<ResourceDictionary Source="/PresentationFramework.luna, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/luna.normalcolor.xaml" />
</Application.Resources>
</Application>
请注意,您需要添加对PresentationFramework.luna dll的引用。