Автоматически изменять VisualState в Silverlight - PullRequest
2 голосов
/ 22 марта 2010

Если вы создадите простую кнопку и затем выберите «Изменить шаблон» -> «Редактировать копию», Blend автоматически сгенерирует область стиля вместе со всеми состояниями кнопок (MouseEnter, MouseLeave, Pressed и т. Д.). Нигде в сгенерированном коде не говорится, что в случае события MouseOver измените состояние на MouseOver, но это все равно удастся!

Как стандартная кнопка делает это? Происходит ли какое-то AutoEventWireUp?

1 Ответ

4 голосов
/ 23 марта 2010

Органы управления сами определяют состояния, которые они уважают. К сожалению, волшебной автопроводки не происходит. Кнопка содержит код, который определяет, когда мышь находится над ней, и, в этом случае, устанавливает визуальное состояние MouseOver. TemplateVisualStateAttribute - это то, что позволяет Blend знать, что для этого элемента управления существует допустимое состояние определенного элемента, но код в самом элементе управления фактически определяет, в каком состоянии он находится.

Если вы разрабатываете свой собственный элемент управления, это накладывает бремя определения того, какие состояния поддерживает ваш элемент управления, а также работы по правильному определению состояния, в котором вы находитесь.

К вашему сведению: большинство встроенных элементов управления имеют список поддерживаемых состояний в документации MSDN. Например, кнопка для Silverlight 3 находится здесь .

...