【问题标题】:WPF: Activate Trigger when a MVVM bound property changesWPF:当 MVVM 绑定属性更改时激活触发器
【发布时间】:2011-01-23 11:41:30
【问题描述】:

不知何故,我在这里绕圈子。如果这个问题的答案很明显,请见谅。

我想对 View 中 ViewModel 中更改的属性做出反应。当属性(布尔)改变时,视图应该开始一个动画(BeginStoryBoard)。 实际上,在我的应用程序中,这些属性中有 4 个,每个属性在 VM 中都有自己的名称,每个容器视图元素都有两个所需的动画(隐藏/显示)。

当直接在各自的容器元素(所有这些都是从 ContentConrol 派生的自定义类型 SizerControl)中设置这些触发器(尝试过 DataTrigger/Trigger/EventTrigger)时,wpf 给了我建议使用样式的错误。直接在容器元素中设置样式时,我得到:“XML 命名空间中不存在标签‘Style.Triggers’......” 但是当在全局 ResourceDictionary 中使用样式时,我不知道如何绑定到 4 个容器以获取触发器的“输入”值。

您对如何从架构 pov 解决这个问题有什么建议吗?也许我已经走错路了,看不到明显的解决方案。

非常感谢, 辛纳克

【问题讨论】:

    标签: wpf mvvm binding triggers datatrigger


    【解决方案1】:

    您可以使用DataTriggerStoryBoard 来做到这一点。

    MSDN 有描述该过程的完整示例,并附有代码,记录在 How to: Trigger an Animation When Data Changes 中。

    【讨论】:

    • 谢谢 Reed - 您的建议最终是正确的方法。实际上,我之前尝试过完全相同的方法,但遇到了以下描述的问题:sweux.com/blogs/smoura/index.php/wpf/2009/07/08/…(一个 DataTrigger 覆盖了前一个),所以在我看来,错误在执行链的下游。上述链接中建议的解决方案修复了在链接样式中使用 DataTriggers 的一般方法。
    • 已记录的链接不再存在。
    猜你喜欢
    • 2011-11-10
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    • 2011-09-06
    • 2010-11-04
    相关资源
    最近更新 更多