wpf - 在 WPF 中,是否可以为单个事件触发器指定多个路由事件?

标签 wpf xaml routed-events event-triggers

我有一个事件触发器,我想在响应两个不同的路由事件时触发它。我不想重复事件响应代码(在 XAML 中)两次。我可以为单个事件触发器声明指定多个路由事件吗?

单个事件示例:

<Style.Triggers>
    <EventTrigger RoutedEvent="Button.MouseEnter">
        <--XAML MAGIC-->
        ...

最佳答案

抱歉... WPF 的 EventTrigger 实现只允许一个路由事件。

通常,您将从路由事件中触发 Storyboard。我建议以下妥协:

<!--Define a storyboard as a resource-->
<Storyboard x:Key="MyStoryboard1">
   <!--Many properties and etc...-->
</Storyboard>

<Style.Triggers>
   <EventTrigger RoutedEvent="Button.MouseEnter">
      <BeginStoryboard Storyboard="{StaticResource MyStoryboard1}">
         <!--Other properties/name if necessary-->
      </BeginStoryboard>
   </EventTrigger>
   <EventTrigger RoutedEvent="Button.MouseDown">
      <BeginStoryboard Storyboard="{StaticResource MyStoryboard1}">
         <!--Other properties/name if necessary-->
      </BeginStoryboard>
   </EventTrigger>
</Style.Triggers>

这个概念是通过共享资源来减少重复代码。

希望这可以帮助!

关于wpf - 在 WPF 中,是否可以为单个事件触发器指定多个路由事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654368/

相关文章:

wpf - 将词典合并到多个用户控件中——这会影响内存吗?

c# - WPF 组合框对更改不具有约束力

wpf - 如何在XAML用户控件中填充内容?

c# - 为什么没有 MouseMoveEvent——或者,如何为鼠标移动事件使用 AddHandler

c# - 在代码中设置静态资源

wpf - 在 ItemsControl 中的每个项目周围包裹一些东西

xaml - 文本与 Xamarin Forms 中的链接按钮对齐

c# - 保持对象实例在整个应用程序中可用

c# - MouseDoubleClick 事件不会冒泡

c# - 自定义附加事件的处理程序