WPF控件库中的ResourceDictionary

时间:2009-06-16 11:25:08

标签: wpf vsto resourcedictionary

我们正在创建一个办公室功能区,用于打开另一个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);

1 个答案:

答案 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>

否则,我可以认为这是一个问题,你的风格被一些后来显式或隐式链接的风格所覆盖。如果它找不到你引用的程序集,它应该举一个例子,所以问题不应该在其中。