現在のソリューションには 100 以上のプロジェクトがあります。それぞれが、テーマや統一性などのためのグローバル リソースを備えたいくつかのリソース ディクショナリにアクセスする必要があります。そのために私が行うことは、リソース ディクショナリを 1 つのプロジェクトの中央に配置し、他のプロジェクトが参照するようにすることです。この場合、それを「インフラストラクチャ」と呼び、ディクショナリを提供します。たとえば、マージされた辞書を使用して、独自の app.xaml を介して直接各プロジェクトに。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Our.Client.Infrastructure;component/Resources/Styles/ResDictName1.xaml" />
<ResourceDictionary Source="/Our.Client.Infrastructure;component/Resources/Styles/ResDictName2.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
スタイルをグローバルに適用する方法は、カスタム リソース ディクショナリの下部でスタイルを指定し、デフォルト リソース ディクショナリから同じ宣言を削除することです。たとえば、あなたが見つけた場合;
<Style BasedOn="{StaticResource DefaultButtonStyle}" TargetType="Button" />
デフォルトの CoreStyles.xaml または SdkStyles.xaml またはそれらが何であれ、私はそれを削除し、その宣言をカスタム リソース ディクショナリの一番下に移動し、それに応じて次のように変更します。
<Style BasedOn="{StaticResource OurSuperAwesomeCustomNewGlobalButtonStyle}" TargetType="Button" />
出来上がり...Button
その後は、元のデフォルト テンプレートの代わりに、デフォルトでカスタム スタイルを継承します。ソリューション全体で 1 つまたは 2 つのリソース ディクショナリを使用することの利点は、それを採用するとすぐに明らかになります。つまり、テンプレートが実際にグローバルに利用可能である必要がある場合です。使用されているビューにのみ関連するアドホックなテンプレートを使用している場合は、明示的にそのビューに保持します。他に何も必要ない場合は、他の場所に保持する必要はありません。
お役に立てれば。