【发布时间】:2011-01-05 03:01:50
【问题描述】:
如何以编程方式获取 WPF FrameworkElement 的当前视觉状态?我所说的状态是指“正常”、“鼠标悬停”、“禁用”等状态。
编辑:
基本上,我正在使用VisualStateManager.GoToState(e, "MouseOver", true); 更改按钮的视觉状态,并且我想知道在完成后将其更改回什么状态。
【问题讨论】:
标签: wpf frameworkelement
如何以编程方式获取 WPF FrameworkElement 的当前视觉状态?我所说的状态是指“正常”、“鼠标悬停”、“禁用”等状态。
编辑:
基本上,我正在使用VisualStateManager.GoToState(e, "MouseOver", true); 更改按钮的视觉状态,并且我想知道在完成后将其更改回什么状态。
【问题讨论】:
标签: wpf frameworkelement
我认为您必须自己知道/记住按钮状态。 VSM 只是通过GoToState 方法显示按钮所在的状态。
编辑:我刚刚发现一篇文章如何创建一个能记住控制状态的custom VSM。
【讨论】:
我觉得你在这里错过了 WPF 的重点,它是视图而不是模型。您不应该在视图中存储状态。将状态存储在您的模型中并使用视图来表示它。在此基础上,您无需阅读 View 的状态,您已经知道了。
我知道目前这似乎需要做很多工作,但它会在以后给您带来回报。
【讨论】:
我认为你应该使用 GoToElementState 方法而不是 GoToState 方法。
VisualStateManager.GoToElementState(LayoutRoot, "Add", true);
【讨论】: