私は WPF が初めてで、別のアセンブリにあるスタイルを使用するのに苦労しています。これは私がやっていることです:-
\Themes 内のサブフォルダーから多数の xaml ファイルをマージする「generic.xaml」を含む \Themes フォルダーを含むクラス ライブラリ プロジェクトがあります。
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Metro\CoreStyles.xaml" />
... etc ...
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
私のソリューションには WPF アプリケーション プロジェクトもあり、ここで App.xaml は次のように私のライブラリ プロジェクトのリソースにマージされます。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MyThemeLibrary;component/Themes/generic.xaml"/>
... etc...
ここまでの定番品。
最後に、3 番目のプロジェクト、WPF ユーザー コントロール ライブラリがあります。これらのコントロールは、通常、これらの一般的なスタイルを使用し"Style={StaticResource SomeStyle}"
ます。アプリを実行でき、問題ないように見えますが、問題は、ユーザー コントロールを作成するときにデザイン時のサポートを受けられないことです。デザイン サーフェイスは基本的に空です。
別の SO 記事では、App.xaml をユーザー コントロール ライブラリ プロジェクトに追加し、上記のようにリソースをマージすることを提案しました。これは機能し、設計時のサポートを受けますが、ソリューションをビルドしようとするとエラーが発生します。
Library project file cannot specify ApplicationDefinition element.
他の場所で提案されているように、App.xaml ビルド アクションを「ApplicationDefinition」から「Page」に変更しようとしました。これでビルドは機能しますが、ユーザー コントロールがスタイルを認識できなくなるため、デザイン時のサポートが失われます。
この問題を回避する方法、またはこれに失敗する方法、別のアセンブリのスタイルを使用する別の方法はありますか?
前もって感謝します
アンドリュー