0

MahApps.Metro在 WPF 项目中使用。但是我没有使用 nuget 包,而是下载了源代码并将其作为项目添加到我的解决方案中(出于某些原因)。如您所知,它的所有控件都有一个默认主题。现在,我正在尝试更改MetroWindow项目中的默认值。我不想改变原来的项目。所以我创造了一个新的ResourceDictionary,我正在做造型。我试图改变MetroWindow它们的默认值,但似乎没有x:Key属性是不可能的。我的意思是我试过这个:

<Style TargetType="{x:Type metro:MetroWindow}">
    <!-- My styles and templates gone here... -->
</Style>

还有这个:

<Style x:Key="{x:Type metro:MetroWindow}" TargetType="{x:Type metro:MetroWindow}">
    <!-- My styles and templates gone here... -->
</Style>

但是它们都没有对控件产生影响,并且控件仍然使用由MahApps.Metro. 我错过了什么?任何想法?甚至可能吗?

4

2 回答 2

0

我也尝试过相同的方法,但事实证明无法以这种方式更改窗口样式。你可以做到这一点的唯一方法是滚动你自己的窗口

至于控件,您可以使用例如更改样式:

<Style TargetType="Button" BasedOn="{StaticResource MetroButton}">
    <!-- your changes here -->
</Style>
于 2013-09-02T22:12:27.003 回答
0

另一种方法是创建自己的主题。

  1. 从 Mahapps 复制 BaseLight.xaml 或 BaseDark.xaml 文件的内容并将其粘贴到新的主题文件中。
  2. 在应用程序启动时覆盖主题

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
    
        // Add and apply style
        ThemeManager.AddAccent("CustomAccent", new Uri("pack://application:,,,/Custom.Style;component/CustomAccent.xaml"));
        ThemeManager.AddAppTheme("CustomTheme", new Uri("pack://application:,,,/Customo.Style;component/CustomTheme.xaml"));
        ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("CustomAccent"), ThemeManager.GetAppTheme("CustomTheme"));
    }
    
  3. 例如,要更改所有 MetroWindow 的背景颜色,请更改键“WhiteColor”的值

于 2015-08-06T15:07:13.653 回答