2
System.Windows.Media.Brushes
クラスの色数を増やしたいので、新しいBrushの文字列名でバインドできます。ブラシの数を伸ばす方法は?
Like:value="myRed"
。
私はSystem.Drawing.Brushes
クラスがsealed
あるので、これは可能ではないのC#、.NET 4.5.2、VS2015、Windows 7の
System.Windows.Media.Brushes
クラスの色数を増やしたいので、新しいBrushの文字列名でバインドできます。ブラシの数を伸ばす方法は?
Like:value="myRed"
。
私はSystem.Drawing.Brushes
クラスがsealed
あるので、これは可能ではないのC#、.NET 4.5.2、VS2015、Windows 7の
を使用しています。つまり、継承できないため拡張できません。
あなたの色が含まれていリソース辞書作成オフはるかに良いです:
<ResourceDictionary ... >
<!-- Declare your colours here. -->
<SolidColorBrush x:Key="MyColour">#ffffff</SolidColorBrush>
</ResourceDictionary>
をしてからApp.xaml
で辞書ことを含める:
<Application ... >
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- You may need to include more than one resource dictionary. -->
<ResourceDictionary Source="pack://application:,,,/Your.Project;component/Path/To/Dictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
あなたがでそれらのリソースを取得することができますこのようなコードビハインド:
Brush myColour = (Brush)Application.Current.FindResource("MyColour");
私の意見では、これは、のコードと、のというコードが明確に分かれているため、これは既存のBrushes
クラスを拡張するよりはるかに良い方法です。それだけでなく、リソース・ディクショナリに色をつけておくと、プロジェクト全体での再利用が促進され、リソースは簡単に拡張され、要件の変更に適応しやすくなります。
documentationにリソース辞書の詳細があります。
私はコンバータを使いたくないです。私は複数のxamlファイルとcsファイルで使用できるようにしたい。 – David
だから、基本的に、 'Sealed Class'の' Extension Property'が必要です。これはC#wish listにありますか? – GauravKP
マイク氏の答えに加えて、Brushesクラスを拡張するだけでなく、stringからBrushに変換するコードも拡張する必要があります。 .NETリファレンスソース(BrushConverterから始まる)を見てみると、最終的に内部enum KnownColorと内部クラスKnownColorsに巨大なネストされたswitch文があります。 – Clemens