ResourceDictionary в библиотеке управления WPF
Мы создаем офисную ленту, которая открывает окно 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 ответ
Я только что попробовал это с Office 2010 (фактически используя VSTO Addin 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>
В противном случае я мог бы подумать, что это проблема с вашими стилями, которые будут переопределены некоторыми более поздними явными или неявно связанными стилями. Если он не может найти сборку, на которую вы ссылаетесь, он должен бросить пример, чтобы проблемы не было в нем.