我们正在创建一个办公室功能区,用于打开另一个WPF控件库项目中存储的WPF窗口。 该WPF窗口附加了一些主题,这些主题存储在一个在单独项目中编译的ResourceDictionary中。
然而,当我们加载WPF窗口时,ResourceDictionary中的所有主题都将丢失。
我们可以通过手动/强制窗口本身的主题来解决这个问题,但这似乎是一个糟糕的解决方案。所以我的问题是:如何从Office Addin应用程序加载新WPF窗口的主题?
Uri uri = new Uri("/Nov.Presentation.RigDoc.WpfResources;component/Shared.xaml", UriKind.Relative);
Resources.MergedDictionaries.Add(Application.LoadComponent(uri) as ResourceDictionary);
答案 0 :(得分:3)
我刚刚尝试使用Office 2010(实际上使用的是2007 VSTO Addin但在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>
否则,我可以认为这是一个问题,你的风格被一些后来显式或隐式链接的风格所覆盖。如果它找不到你引用的程序集,它应该举一个例子,所以问题不应该在其中。