2

別の WPF コントロール ライブラリ プロジェクトに格納されている WPF ウィンドウを開く Office リボンを作成しています。その WPF ウィンドウには、別のプロジェクトでコンパイルされた ResourceDictionary に格納されているいくつかのテーマが添付されています。

ただし、WPF ウィンドウをロードすると、ResourceDictionary のすべてのテーマが失われます。

ウィンドウ自体にテーマを手動/強制的に適用することでこれを修正できますが、これは悪い解決策のようです。私の質問は、Office アドイン アプリケーションから新しい WPF ウィンドウのテーマを読み込むにはどうすればよいですか?

Uri uri = new Uri("/Nov.Presentation.RigDoc.WpfResources;component/Shared.xaml", UriKind.Relative);
            Resources.MergedDictionaries.Add(Application.LoadComponent(uri) as ResourceDictionary);
4

1 に答える 1

3

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>

そうしないと、後でスタイルに明示的または暗黙的にリンクされたスタイルによってスタイルがオーバーライドされるという問題があると考えることができます。参照するアセンブリが見つからない場合は、例をスローする必要があるため、問題は発生しません。

于 2011-01-27T15:18:52.270 に答える