Как программно получить текущее визуальное состояние элемента 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. Нельзя сохранять состояние в представлении. Сохраните состояние в своей модели (-ях) и используйте представление для его представления. На этой основе вам не нужно читать состояние представления, вы уже знаете его.

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