Приложение WPF Design для динамического изменения скина

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

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

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

Спасибо


person veljkoz    schedule 22.08.2011    source источник


Ответы (1)


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

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

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

это демонстрация codeproject

person Muad'Dib    schedule 22.08.2011