【问题标题】:How do I programmatically get the current Visual State of a WPF FrameworkElement?如何以编程方式获取 WPF FrameworkElement 的当前视觉状态?
【发布时间】:2011-01-05 03:01:50
【问题描述】:

如何以编程方式获取 WPF FrameworkElement 的当前视觉状态?我所说的状态是指“正常”、“鼠标悬停”、“禁用”等状态。

编辑: 基本上,我正在使用VisualStateManager.GoToState(e, "MouseOver", true); 更改按钮的视觉状态,并且我想知道在完成后将其更改回什么状态。

【问题讨论】:

    标签: wpf frameworkelement


    【解决方案1】:

    我认为您必须自己知道/记住按钮状态。 VSM 只是通过GoToState 方法显示按钮所在的状态。

    编辑:我刚刚发现一篇文章如何创建一个能记住控制状态的custom VSM

    【讨论】:

      【解决方案2】:

      我觉得你在这里错过了 WPF 的重点,它是视图而不是模型。您不应该在视图中存储状态。将状态存储在您的模型中并使用视图来表示它。在此基础上,您无需阅读 View 的状态,您已经知道了。

      我知道目前这似乎需要做很多工作,但它会在以后给您带来回报。

      【讨论】:

        【解决方案3】:

        我认为你应该使用 GoToElementState 方法而不是 GoToState 方法。

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

        【讨论】:

        • 奇怪,我什至没有看到这种方法。当然,我使用的是 .NET 3.5 的 WPF 工具包中的 VisualStateManager,因此它可能与 .NET 4.0 或 Silverlight 中内置的不同。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-16
        • 2017-11-15
        • 1970-01-01
        相关资源
        最近更新 更多