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

Jor*_*mer 3 wpf xaml event-triggers routed-events

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

单个事件的示例:

<Style.Triggers>
    <EventTrigger RoutedEvent="Button.MouseEnter">
        <--XAML MAGIC-->
        ...
Run Code Online (Sandbox Code Playgroud)

Jos*_*h G 5

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

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

<!--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>
Run Code Online (Sandbox Code Playgroud)

该概念是通过共享资源来减少重复代码.

希望这可以帮助!