忽略App.xaml样式

时间:2017-09-29 17:32:02

标签: c# wpf xaml

我正在使用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样式是否可能?

2 个答案:

答案 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的引用。