我们正在创建一个打开WPF窗口的office功能区,该窗口存储在另一个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);发布于 2011-01-27 23:18:52
我刚刚在Office2010上尝试了一下(实际上使用的是一个2007年的VSTO插件,但在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>否则,我会认为这是一个问题,因为你的样式被一些后来显式或隐式链接的样式所覆盖。如果它找不到你引用的程序集,它应该抛出一个例子,这样问题就不存在了。
https://stackoverflow.com/questions/1000875
复制相似问题