Проблема с пользовательским классом окна, обращающимся к ресурсам в другой сборке - PullRequest
1 голос
/ 31 августа 2011

Моим первым шагом в 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.

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