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

单个事件的示例:

<Style.Triggers>
    <EventTrigger RoutedEvent="Button.MouseEnter">
        <--XAML MAGIC-->
        ...
有帮助吗?

解决方案

对不起...... 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>

的概念是通过共享资源,以减少重复的代码。

希望这有助于!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top