注次のコンテンツ/回答の帰属は、@ChrisSchallerに送信する必要があります。この回答のコンテンツは、元々@ chameleon86回答への編集として投稿され、拒否されました(このメタも参照)。ただし、これは貴重なコンテンツであると思いますので、「再投稿」しています。
styles.xamlの定義をアプリ内のすべてのXAMLで利用できるようにするには、styles.xamlをApp.xamlに追加します
<Application.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries >
<ResourceDictionary Source="styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!-- You can declare additional resources before or after Merged dictionaries, but not both -->
<SolidColorBrush x:Key="DefaultBackgroundColorBrush" Color="Cornsilk" />
<Style x:Key="DefaultBackgroundColor" TargetType="TextBox">
<Setter Property="Background" Value="{StaticResource DefaultBackgroundColorBrush}" />
</Style>
</ResourceDictionary>
</Application.Resources>
これがどのように機能するかを理解するために、実行時に、ウィンドウ、ページ、またはコントロールは、実行中のアプリケーションビジュアルツリーの子要素として存在します。
最初の質問は次のとおりです。
「これらの色は、アプリケーションの一部に含まれる特定の要素を定義します...」
これらのスタイルリソースを一部のxamlページまたはウィンドウでのみ使用でき、すべてではない場合でも、このパターンを使用して、ウィンドウまたはグリッドやその他のコントロールのローカルリソースを直接マージできます。
- これを行うと、これらのスタイルは、リソースディクショナリを宣言した要素の子要素でのみ使用可能になることに注意してください。
使用する単一のグリッドへのスタイル参照のスコープがいかに単純であるかを確認してください。
<Grid>
<Grid.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries >
<ResourceDictionary Source="styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!-- You can declare additional resources before or after Merged dictionaries, but not both -->
</ResourceDictionary>
</Grid.Resources>
<!--
Grid Content :)
-->
</Grid>