Получение Generic.xaml, работающего из элемента управления WPF, встроенного в WinForms - PullRequest
1 голос
/ 10 марта 2011

У меня есть элемент управления WPF, встроенный в форму Windows, которая работает нормально. Но у меня есть все мои стили для проекта WPF внутри Themes / Generic.xaml. Когда я встраиваю элемент управления WPF в элемент управления Windows Forms ElementHost, эти стили не выбираются.

Нужно ли менять представление WPF, чтобы явно включать стили в раздел «Ресурсы», или файл generic.xaml по-прежнему автоматически выбирается?

1 Ответ

4 голосов
/ 10 марта 2011

Themes / Generic.xaml находится в другой сборке?

Проблема в том, что приложение не находит ResourceDictionary, в котором определены стили.

Что вы можете сделать, это создать статический класс SharedDictionaryManager, подобный этому:

public static class SharedDictionaryManager
{
    private static ResourceDictionary _sharedDictionary;
    internal static ResourceDictionary SharedDictionary
    {
        get
        {
            if (_sharedDictionary == null)
            {
                System.Uri resourceLocater =
                    new System.Uri("/assembly;component/Themes/Generic.xaml",
                                    System.UriKind.Relative);

                _sharedDictionary =
                    (ResourceDictionary)Application.LoadComponent(resourceLocater);
            }

            return _sharedDictionary;
        }
    }
}

И когда вы создаете HostControl, вы добавляете словарь ресурсов и управляете:

ctrl.Resources.MergedDictionaries.Add(SharedDictionaryManager.SharedDictionary);

Если у вас есть более одного словаря ресурсов, у вас может быть одно свойство, подобное этому, для каждого или у вас может быть свойство, которое загружает все словари ресурсов и затем объединяет все словари.

Теперь стиль, который вам нужен, должен быть выбран автоматически.

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