Как программно получить текущее визуальное состояние элемента WPF FrameworkElement?
Как программно получить текущее визуальное состояние элемента WPF FrameworkElement? И по состоянию я имею в виду такие состояния, как "Обычный", "MouseOver", "Disabled" и т.д.
EDIT:
В основном, я меняю визуальное состояние кнопки с VisualStateManager.GoToState(e, "MouseOver", true);
, и я хочу знать, какое состояние изменить его обратно после того, как я закончил.
Ответы
Ответ 1
Я думаю, вам нужно знать/запомнить состояние кнопки самостоятельно. VSM просто отображает состояние, в котором кнопка находится по методу GoToState
.
Изменить: Я только что нашел статью о том, как создать пользовательский VSM, который запоминает состояния управления.
Ответ 2
Я думаю, вам следует использовать метод GoToElementState вместо метода GoToState.
VisualStateManager.GoToElementState(LayoutRoot, "Add", true);
Ответ 3
Я чувствую, что вы пропустили точку WPF здесь, это View not the Model. Нельзя сохранять состояние в представлении. Сохраните состояние в своей модели (-ях) и используйте представление для его представления. На этой основе вам не нужно читать состояние представления, вы уже знаете его.
Я знаю, что на данный момент это может показаться большой работой, но позже он вернет вам пики.