【问题标题】:Can you use routed events with a MultiTrigger?您可以将路由事件与 MultiTrigger 一起使用吗?
【发布时间】:2023-03-24 19:55:01
【问题描述】:

WPF 是否支持使用响应路由事件但仅满足条件的触发器?

例如,WPF 支持通过事件触发器触发路由事件。 即:

<Button>
  <Button.Triggers>
    <EventTrigger RoutedEvent="Click">
      ...
    </..
  </..
</..

但是,我正在寻找仅在满足特定条件时才触发的触发器。通常,您使用 MultiTriggers 来满足多个条件。即:

<Button>
  <Button.Triggers>
    <MultiDataTrigger>
      <MultiDataTrigger.Conditions>
         <Condition Binding="..." Value="..."/>
         <Condition Binding="..." Value="..."/>
      </..
    </..
  </..
</..

然而,MultiTrigger 或 MultiDataTrigger 似乎都不支持触发路由事件。甚至可以在 XAML 中混合使用这两个路由事件和条件的概念吗?

【问题讨论】:

    标签: wpf triggers eventtrigger routedevent multidatatrigger


    【解决方案1】:

    我不这么认为。反正不是你想的那样。

    MultiTriggerMultiDataTrigger 在多个属性同时具有匹配值时触发。这是很容易发生的事情,因为它是基于状态的。它基于至少在一段时间内保持不变的值。

    另一方面,事件发生然后消失。如果两个事件不同时发生,你怎么能做出反应?

    你必须使用你的EventTriggers——也许在set-enter/set-leave对——来设置某些属性的状态(附加的属性在这里听起来不错),然后创建一个MultiTrigger查看了这些属性。

    【讨论】:

    • 我同意,并且我要补充一点,大多数指示状态变化的 RoutedEvents 都有与其对应的属性,并且可以在 MultiTrigger 中使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2020-11-23
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多