Добавление собственных «акцентов» во время выполнения с помощью Mahapps.Metro

Я уже давно пользуюсь Mahapps.Metro, и мне нравятся акцентные цвета. Но я только что подумал об идее, где пользователь может выбирать собственные цвета и добавлять их в MahApps.Metro.ThemeManager.DefaultAccents -List, а затем использовать его. Но; как бы я это сделал? Я знаю, что в ThemeManager есть функция с именем ChangeTheme, которая принимает приложение (целевое приложение), Accent и Theme (тёмное или светлое)

Объект Accent состоит из Name и ResourceDictionary, который выглядит как это

Поэтому я подумал, что могу создать собственный ResourceDictionary, подобный тому, который я связал, и позволить пользователю изменять цвета и называть их. Но как мне создать словарь ресурсов во время выполнения?


person Tokfrans    schedule 07.05.2014    source источник


Ответы (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")
person andrei.culda    schedule 15.09.2014