我在WPF项目中使用MahApps.Metro
。但是我没有使用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
定义的默认主题。我错过了什么?任何的想法?它甚至可能吗?
答案 0 :(得分:0)
我也尝试了同样的但事实证明不可能以这种方式改变窗口风格。唯一可以做到的方法是rolling your own window。
对于控件,您可以使用例如:
更改样式<Style TargetType="Button" BasedOn="{StaticResource MetroButton}">
<!-- your changes here -->
</Style>
答案 1 :(得分:0)
另一种方法是创建自己的主题。
在应用程序启动时覆盖主题
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"));
}
例如,要更改所有MetroWindow的背景颜色,请更改键的值&#34; WhiteColor&#34;