Как использовать. - PullRequest
       17

Как использовать.

0 голосов
/ 23 ноября 2010

У меня есть приложение silverlight со следующими строками где-то в приложении:

txtMelding.Foreground = new SolidColorBrush(Colors.Black);

и

txtMelding.Foreground = new SolidColorBrush(Colors.Gray);

Позже я хочу, чтобы IF проверял всякий раз, когда цвет переднего планачерный или серый.Как?

Ответы [ 4 ]

2 голосов
/ 23 ноября 2010

Вам нужно навести кисть переднего плана на SolidBrush - при условии, что вы всегда знаете, будет сплошной кистью:

SolidBrush brush = (SolidBrush) txtMelding.Foreground;
if (brush.Color == Colors.Gray)
{
    ...
}

Если вы этого не знаетеэто всегда будет SolidBrush, вы можете использовать as:

SolidBrush brush = txtMelding.Foreground as SolidBrush;
if (brush != null && brush.Color == Colors.Gray)

С другой стороны, разве цвет не должен отражать какой-то аспект вашего состояния?Может быть, лучше (с точки зрения дизайна) реагировать на , чем , чем реагировать на внешний вид пользовательского интерфейса.

2 голосов
/ 23 ноября 2010
if (((SolidBrush)txtMelding.Foreground).Color == Colors.Gray)
{
    // the color is gray
}
0 голосов
/ 23 ноября 2010

Другой и более понятный способ задания и сравнения SolidColorBrushes заключается в использовании встроенных кистей , которые существуют в System.Windows.Media:

txtMelding.Foreground = Brushes.Black;

и

if(txtMelding.Foreground == Brushes.Black)

Намного лучше;)

0 голосов
/ 23 ноября 2010

Я узнал, как это сделать:

if (((SolidColorBrush)txtMelding.Foreground).Color == Colors.Gray)
...