ResourceDictionary в WPF Control Library - PullRequest
2 голосов
/ 16 июня 2009

Мы создаем офисную ленту, которая открывает окно WPF, которое хранится в другом проекте библиотеки управления WPF. К этому окну WPF прикреплены некоторые темы, которые хранятся в ResourceDictionary, скомпилированном в отдельный проект.

Однако, когда мы загружаем окно WPF, все темы из ResourceDictionary теряются.

Мы можем исправить это вручную / принудительно вставив тему в само окно, но это кажется плохим решением. Итак, мой вопрос: как я могу загрузить тему нового окна WPF из приложения Office Addin?

Uri uri = new Uri("/Nov.Presentation.RigDoc.WpfResources;component/Shared.xaml", UriKind.Relative);
            Resources.MergedDictionaries.Add(Application.LoadComponent(uri) as ResourceDictionary);

1 Ответ

3 голосов
/ 27 января 2011

Я только что попробовал это с Office 2010 (фактически используя надстройку VSTO 2007 года, но запустил его в 2010 году), и она отлично работает. У меня есть библиотека внешнего проекта, на которую есть ссылка в проекте VSTO, и я использую этот следующий xaml в элементе управления для ссылки в словаре ресурсов.

<UserControl.Resources>
    <ResourceDictionary>

        <!-- Link in th general styles -->
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MyAssemblyName;component/MyResourceDictionaryName.xaml" />
        </ResourceDictionary.MergedDictionaries>

        <!-- Other style... -->

    </ResourceDictionary>        

</UserControl.Resources>

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

...