【问题标题】:ResourceDictionary in WPF Control LibraryWPF 控件库中的资源字典
【发布时间】:2009-06-16 11:25:08
【问题描述】:

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

【问题讨论】:

  • 感谢您的回复!是的,不是的,这就是我正在使用的,但是当我从 Office 应用程序打开窗口时,样式会消失,因为它没有在 WPF 应用程序范围内运行。

标签: wpf vsto resourcedictionary


【解决方案1】:

我刚刚在 Office 2010 上尝试过这个(实际上使用的是 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>

否则我会认为这是一个问题,因为您的样式被后来的一些显式或隐式链接的样式覆盖。如果它找不到您引用的程序集,它应该抛出一个示例,因此问题不应该存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多