Как программно получить текущее визуальное состояние WPF FrameworkElement? - PullRequest
13 голосов
/ 14 января 2010

Как программно получить текущее визуальное состояние WPF FrameworkElement? И под состоянием я подразумеваю такие состояния, как «Нормальный», «MouseOver», «Отключен» и т. Д.

EDIT: По сути, я изменяю визуальное состояние кнопки с помощью VisualStateManager.GoToState(e, "MouseOver", true);, и я хочу знать, в какое состояние она будет изменена после того, как я закончу.

Ответы [ 3 ]

2 голосов
/ 26 апреля 2010

Я думаю, вы должны знать / помнить состояние кнопки самостоятельно. VSM просто отображает состояние, в котором находится кнопка, методом GoToState.

Редактировать: Я только что нашел статью о том, как создать пользовательский VSM , который запоминает состояния управления.

0 голосов
/ 24 августа 2011

Я чувствую, что вы здесь упустили смысл WPF, это не модель, а вид. Вы не должны хранить состояние в представлении. Сохраните состояние в вашей модели и используйте представление для его представления. На этом основании вам не нужно читать состояние View, вы уже знаете его.

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

0 голосов
/ 02 августа 2011

Я думаю, вы должны использовать метод GoToElementState вместо метода GoToState.

VisualStateManager.GoToElementState(LayoutRoot, "Add", true);
...