Изменить тему для однопользовательского управления метрополитеном - PullRequest
2 голосов
/ 18 апреля 2020

Я создал конфигурационный инструмент WPF с mahapps.metro (версия 1.5!), Который позволяет пользователю настраивать другие мои приложения. В одном из представлений я позволил пользователю определить стили. Чтобы было проще определить, какой стиль подходит, я создал элемент управления, похожий на другие приложения в миниатюре. Идея состоит в том, чтобы установить определенный стиль для этого предварительного просмотра.

Итак, возможно ли изменить тему для одного динамического UserControl? Все, что я нашел, это класс ThemeManager, но с этим я меняю тему для всего приложения или всего текущего окна, а не только для одного элемента управления в моем текущем окне:

ThemeManager.ChangeAppStyle(Application.Current, …)

Я открыт для другие (практические) решения. Но оно должно быть частью того же окна, чтобы диалоговое окно или всплывающее окно предварительного просмотра не было приемлемым решением.

1 Ответ

0 голосов
/ 19 апреля 2020

ThemeManager.ChangeAppStyle может принять Window в качестве первого параметра. Таким образом, вместо использования UserControl вы можете сделать Window, и в этом окне вы можете показать новый стиль:

public partial class Window1 : MetroWindow
{
    public Window1()
    {
        InitializeComponent();

        ThemeManager.ChangeAppStyle(this,
            ThemeManager.GetAccent("Orange"),
            ThemeManager.GetAppTheme("BaseLight"));
    }
}
...