Windows Phone 7, Условное заявление для цвета обводки возможно? - PullRequest
0 голосов
/ 27 июня 2011

У меня так много проблем с этой мелочью, и я надеюсь, что кто-то может ответить.

У меня есть прямоугольник с именем «Три» со значением по умолчанию Stroke="#FF123123", что, если кто-то нажимает на прямоугольник, он меняет цвет обводки (границы) на

Three.Stroke = new SolidColorBrush(Colors.Yellow);

Если кто-то снова щелкнет по нему, я бы хотел, чтобы оно вернулось к исходному цвету Stroke="#FF123123". У меня уже есть код для этого, и это не проблема. Проблема в том, как мне создать условный оператор, чтобы изменить его обратно, при условии, что он был изменен в первую очередь?

Я не могу сделать условное утверждение:

"If (Three.Stroke == Colors.Yellow) {}"

как я получаю сообщение об ошибке:

Оператор '==' не может быть применен к операнды типа 'System.Windows.Media.Brush' и 'System.Windows.Media.Color'

Ответы [ 3 ]

1 голос
/ 27 июня 2011

Храните массив из двух экземпляров кисти где-нибудь. Если кисть прямоугольника является одной из них, переключитесь на другую (вместо создания нового экземпляра на месте).

Ошибка довольно проста: вы пытаетесь сравнить саму кисть с возможным цветом для кисти. Вы могли бы определить цвет текущей кисти и сравнить его, но описанный выше подход, вероятно, проще.

0 голосов
/ 27 июня 2011

Свойство Stroke имеет тип Brush, для которого SolidColorBrush является подклассом. Если вы хотите получить доступ к свойству SolidColorBrush, вам необходимо привести значение Stroke к SolidColorBrush:

Color currentColor = ((SolidColorBrush)Three.Stroke).Color;

if (currentColor == Colors.Yellow) {}
0 голосов
/ 27 июня 2011

Это не прямой ответ на ваш вопрос, но, возможно, вместо Rectangle вы могли бы использовать ToggleButton и декларативно применять стили, основанные на свойстве IsChecked?

...