WPF Designing приложение для динамического оформления - PullRequest
2 голосов
/ 22 августа 2011

Я разрабатываю довольно сложное приложение WPF, много модулей, которые будут загружаться с Prism v4 (некоторые пользовательские элементы управления будут в отдельных библиотеках, а также некоторые другие функции / плагины). Так как я только начинаю WPF, у меня есть несколько вопросов.

Я бы хотел, чтобы весь графический интерфейс пользователя был «скиновым» таким образом, чтобы пользователь мог щелкнуть и выбрать другую цветовую схему, а весь графический интерфейс пользователя изменил отображение на выбор пользователя - главный экран, включая все модули (то есть изменения кожи во время выполнения)

Q: Можете ли вы порекомендовать какой-то общий подход с этим? Например, я могу просто написать Xaml без указания какого-либо стиля (в частности, не связывать его с динамическим стилем), и он может измениться во время выполнения? Как я могу переключить активный скин, чтобы он влиял на все загруженные пользовательские элементы управления?

Спасибо

1 Ответ

3 голосов
/ 22 августа 2011

В принципе, все, что вам нужно сделать, это заменить словари ресурсов.они должны содержать ваши стили, кисти и т. д. для всего приложения.Вы даже можете хранить эти «скины» во внешних сборках.

вы должны взглянуть на ComponentResourceKeys для «именования» внешних ресурсов, и здесь приведен фрагмент кода о том, как загрузить ресурсы из указанной внешней сборки:

using (FileStream fs = new FileStream("MainResources.xaml", FileMode.Open))
{
    ResourceDictionary dic = (ResourceDictionary) XamlReader.Load(fs);
    Resources.MergedDictionaries.Clear();
    Resources.MergedDictionaries.Add(dic);
}

вот демонстрация кода проекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...