リソース キーは何でもかまいません。そのため、Color
a をキーと値として同時に使用できます。
public static class MyColors
{
static MyColors()
{
App.Current.Resources.Add(MyHighlightColorKey, MyHighlightColorKey);
}
public static readonly Color MyHighlightColorKey = Color.FromArgb(255, 0, 88, 0);
}
静的コンストラクターは、それ自体をキーとして使用して、アプリケーション リソースに色を追加します。
(定義されたすべての色またはブラシに対して内部的にSystemColors
使用しSystemResourceKeys
ますが、そのクラスにはアクセスできません(これは理にかなっています)、代わりにResourceKey
、値を独自のキーとして使用することに問題がある場合はサブクラス化できます)
次のように使用できます。
<TextBox>
<TextBox.Background>
<SolidColorBrush Color="{DynamicResource {x:Static local:MyColors.MyHighlightColorKey}}"/>
</TextBox.Background>
</TextBox>
また、ローカル レベルでキーを上書きする必要がある場合は、次のように行うこともできます。
<Window.Resources>
<Color x:Key="{x:Static local:MyColors.MyHighlightColorKey}" A="255" R="255" G="0" B="0"/>
</Window.Resources>
編集:色、ブラシなどがたくさんある場合は、リフレクションを使用してコンストラクターにリソースを登録することもできます (フィールドを使用しました。プロパティを使用してデータを公開する場合は、これを少し調整する必要があります):
static MyColors()
{
FieldInfo[] keyFieldInfoArray = typeof(MyColors).GetFields();
foreach (var keyFieldInfo in keyFieldInfoArray)
{
object value = keyFieldInfo.GetValue(null);
App.Current.Resources.Add(value, value);
}
}