実行時に WPF コントロールをホストする必要がある Windows フォーム アプリケーションがあります。(ElementHost コントロールを使用して) 基本的なホスティングと対話が完了し、WPF コントロールで定義済みのカスタム リソース ディクショナリを使用する必要があることを実行しようとするまで、すべて正常に動作します。(WPF コントロールとそのすべてのリソース ディクショナリは、すべて同じ WPF コントロール ライブラリ DLL で定義されています。)
それが起こるとすぐに、次のようなエラーがたくさん表示されます。
System.Windows.ResourceDictionary Warning: 9 : Resource not found; ResourceKey='DocumentHeaderInterestStyle'
参考文献を 1 つ見つけました(アーカイブのためリンクが切れているようです。これ は最初に参照された記事と同じかもしれません)。これについては話していますが、この記事は WPF 側からアプローチしているように見えますが、すべてがスタンドアロンの WPF アプリケーションで機能するため、WPF コントロールを変更する必要はありません。
これを達成する唯一の方法が WPF 側で変更することである場合は、それらの変更を行うことができます (私は WPF コントロール ライブラリの責任者ではありませんが、同じ会社で働いている人なので問題ありません)変更を加える時間を得るよりも.) しかし、これを機能させるために WinForms 側で何かできることを望んでいます。
WPF コントロール ライブラリには、次のプロパティを持つプロジェクトで定義された "Default.xaml" という名前のリソース ディクショナリ ファイルがあります。
ビルド アクション: ページを出力ディレクトリにコピー: コピーしない カスタム ツール: MSBuild:Compile
スタンドアロン WPF アプリケーションの App.xaml ファイルには、次のエントリがあります。
<ResourceDictionary x:Uid="ResourceDictionary_1">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary x:Uid="ResourceDictionary_2" Source="/SmartClient.Infrastructure;component/Themes\Default.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
コントロール ライブラリは、そのリソースを取得する方法を既に知っているはずです。Resources.MergedDictionaries.Add() を使用するとうまくいくように見えますが、既存の辞書のインスタンスはどこで取得できますか?