使用Mahapps.Metro在运行时添加自己的“重音”

时间:2014-05-07 10:40:09

标签: c# wpf xaml mahapps.metro

我现在已经使用Mahapps.Metro一段时间了,我喜欢重音符号。但我刚才想到了一个想法,用户可以选择自己的颜色并将它们添加到MahApps.Metro.ThemeManager.DefaultAccents -List然后使用它。但;我该怎么做呢?我知道ThemeManager有一个名为ChangeTheme的函数,它接受一个应用程序(目标应用程序),AccentTheme(黑暗或光明)

Accent对象由Name和一个看起来像this

的ResourceDictionary组成。

所以我认为我可以像我链接的那样创建一个自己的ResourceDictionary,并允许用户更改颜色,并命名它们。 但是如何在运行时创建resourcedictionary?

1 个答案:

答案 0 :(得分:1)

我在vb.net中这样做了(主题有两个复选框):

    Dim accent As MahApps.Metro.Accent = New MahApps.Metro.Accent("Green", New Uri("pack://application:,,,/MahApps.Metro;component/Styles/Accents/Green.xaml", UriKind.RelativeOrAbsolute))
    Dim LightTheme As MahApps.Metro.AppTheme = New MahApps.Metro.AppTheme("BaseLight", New Uri("pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml", UriKind.RelativeOrAbsolute))
    Dim DarkTheme As MahApps.Metro.AppTheme = New MahApps.Metro.AppTheme("BaseDark", New Uri("pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml", UriKind.RelativeOrAbsolute))
    If Me.DarkThemeSelect_check.IsChecked = True Then
        ThemeManager.ChangeAppStyle(Application.Current, accent, DarkTheme)
    ElseIf Me.LightThemeSelect_check.IsChecked = True Then
        ThemeManager.ChangeAppStyle(Application.Current, accent, LightTheme)
    End If

如果您只需要更改主题(黑暗或光明):

    ThemeManager.ChangeAppTheme(Application.Current, "BaseLight")