Моим первым шагом в WPF было создание приложения (ABC) и решение библиотек классов (XYZ), которые будут использоваться во всех будущих приложениях.
Чтобы повторно использовать окно из ABC, чтобы всеприложения выглядят единообразно, я создал базовый класс, который наследуется от System.Windows.Window
.Этот класс находится в проекте библиотеки классов XYZWindows в пространстве имен XYZ.Windows.У меня также есть проект библиотеки классов под названием XYZResources, который содержит (в настоящее время) две тематические обложки, состоящие из десятков стилей.
В приложении ABC я смог ссылаться на эти обложки с помощью кода в App.xaml:
public void ApplySkin( ThemedSkin Skin ) {
Collection<ResourceDictionary> merged = base.Resources.MergedDictionaries;
switch( Skin ) {
case ThemedSkin.Dark:
merged[0].Source = new Uri( "pack://application:,,,/XYZResources;component/Themes/Dark.xaml", UriKind.Absolute );
case ThemedSkin.Light:
merged[0].Source = new Uri( "pack://application:,,,/XYZResources;component/Themes/Light.xaml", UriKind.Absolute );
}
}
Будучи новичком в WPF, я не уверен, где я нашел это, но это сработало, и я смог глобально стилизовать все элементы управления, а также ссылаться на отдельные стили в XAML, используя {Dynamic Resource}
.Поскольку мой класс окон - это моя первая попытка создания окна строго в коде, я не уверен, как получить доступ к моим стилям.
Я возился с ComponentResourceKey, но я не выяснил, какой тип яМне нужно использовать в своем конструкторе.
Мне нужен действительно хороший учебник или, по крайней мере, толчок в правильном направлении, но такого рода вещи действительно трудно успешно Google.