我已经使用Mahapps.Metro已有一段时间了,而且我喜欢accentcolors。但我现在想到了一个想法,用户可以选择自己的颜色并将其添加到MahApps.Metro.ThemeManager.DefaultAccents -List中,然后使用它。但;我将如何去做呢?我知道ThemeManager有一个名为ChangeTheme的函数,该函数需要一个应用程序(目标应用程序),一个Accent和一个Theme(暗或亮)

Accent对象由一个Name和一个ResourceDictionary组成,看起来像this

因此,我认为我可以像链接的那样创建自己的ResourceDictionary,并允许用户更改颜色并命名。
但是如何在运行时创建资源字典?

最佳答案

我在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")

关于c# - 使用Mahapps.Metro在运行时添加自己的“口音”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23515497/

10-12 14:21