【问题标题】:How can I implement a Multi-DataTriggerBehavior如何实现 Multi-DataTriggerBehavior
【发布时间】:2014-08-18 11:50:01
【问题描述】:

如何实现 Multi-DataTriggerBehavior?

我已经有了一个 DataTriggerBehavior。但我需要一个基于事件和多个条件的触发器。

【问题讨论】:

  • “多个条件”是指属性更改对吗?
  • 是的。我的意思是根据多个属性的值触发一个动作。
  • 听起来你需要创建自己的行为来处理这个问题。只需创建一堆依赖属性并订阅它们的属性更改回调。如果所有的回调都被调用了,做点什么。
  • 好吧,当我满足所有条件并且我想以编程方式调用 VisualState 时,我会卡住。因为我的网格拥有一个 VisualStateGroup,所以我无法在行为类中执行成功的视觉状态更改。

标签: winrt-xaml windows-8.1 windows-phone-8.1 expression-blend


【解决方案1】:

我建议你创建自己的Behavior 来处理这个问题。

这些是可能的解决方案的步骤。

  1. 因为您需要在 Behavior 后面的代码中以某种方式调用 VisualState,所以您必须将 xaml 中定义的 VisualStateManager 更改为 ExtendedVisualStateManager(请参阅此 @ 中的实现) 987654321@) 作为内置 VisualStateManagerGoToState 方法不接受 Grid 作为其参数。

  2. 创建一个Behavior 并将其附加到正确的Control。我假设您想在引发Control事件 时做某事。因此,您需要在 Behavior 代码隐藏中为此创建一个处理程序。

  3. 创建映射在视图模型中定义的属性的依赖属性,并订阅所有更改的属性callbacks。您可能需要本地标志来判断它们是否都已更新。如果是,请在您的事件处理程序中调用ExtendedVisualStateManager.GoToElementState。请注意,您可能还需要创建一个依赖属性来引用您的 Grid 和其他一些属性来映射您的 VisualState 名称。

  4. Behavior 附加到 xaml 中的 Control 并数据绑定其所有依赖项属性。

希望这是有道理的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-29
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多