你能在MultiTrigger中使用路由事件吗?

3

WPF支持使用触发器来响应路由事件,但只有在满足条件的情况下才能触发吗?

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

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

然而,我希望触发器只有在满足特定条件时才会触发。通常情况下,您需要使用MultiTriggers来满足多个条件。例如:

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

然而,MultiTrigger和MultiDataTrigger似乎都不支持路由事件触发。在XAML中,混合这两个概念——路由事件和条件——是否可能?
1个回答

2

我认为并不是这样。无论如何,MultiTriggerMultiDataTrigger的触发是在多个属性同时具有匹配值时触发的。这是很容易发生的,因为它基于状态。 它基于那些至少一段时间保持不变的值。

另一方面,事件会发生然后消失。当它们没有同时发生时,您如何对多个事件作出反应呢?

您将不得不使用EventTrigger - 可能是以设置输入/离开集合的方式 - 来设置某些属性的状态(此处附加属性听起来不错),然后创建一个查看这些属性的MultiTrigger


我同意,并且我想补充一点,大多数指示状态变化的RoutedEvents都有相应的属性,可以在MultiTrigger中使用。 - Robert Macnee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接