2つのライブラリと1つのアプリケーションアセンブリプロジェクトレイアウトがあり、一方のライブラリで定義されているもう一方のライブラリのキーでスタイルを参照するにはどうすればよいのでしょうか。
私のソリューションレイアウト:
- WpfControls.dll -WPFベースのNumericUpDownコントロール、その他の基本的なコントロール、および再利用可能にしたいいくつかのスタイルなど、一般的な再利用可能なコントロールを保持します。例のために、ここでの私のスタイルキーがMyButtonStyleとして定義されているとしましょう。
- SpecializedControls.dll-カスタム複合コントロールやWPFのUserControlsなど、アプリケーションに特化したコントロールを保持します。ここで、WpfControls.dllアセンブリで定義されているMyButtonStyleスタイルを参照します。
- Application.exe-このアセンブリは、SpecializedControls.dllアセンブリで定義されたコントロールを使用します。
単純な単一のコントロールライブラリとアプリケーションアセンブリを使用してこれを行う方法を説明する例を見てきましたが、私の場合は2つのアセンブリと1つのアプリケーションがあります。つまり、私の場合、MergeDictionariesの概念を使用できる2番目のコントロールライブラリにApp.xamlがありません。MergedDictionaries参照を各コントロールXAMLファイルに直接配置して、WpfControls.dllアセンブリで定義されたすべてのGeneric.xamlをマージできると確信していますが、これにより、スタイルがさまざまな場所に冗長にマージされると思います。私のSpecializedControlsアセンブリでは、これは最善の解決策とは思えません。さらに悪いことに、これらの辞書もApplication.exeにマージされる可能性がありますが、これにより、実行時にアプリケーションが肥大化し始めますか?
プログラムとリソースのオーバーヘッドを最小限に抑えて、このようなスタイルを共有するための推奨または最善のアプローチを誰かが明確にできますか。
更新:もう少しテストしたところ、同じアセンブリ内であっても、Generic.xaml内で定義されているリソースをそのキーで参照するのに問題があるようです。リソースキーがどのように機能するかを理解している方法にまったく問題がある可能性があるため、ComponentResourceKeyを調べるだけでなく、もう少し調査する必要があります。誰かが何かヒントや提案があれば助けてください。