我有一个事件触发器,我希望在响应两个不同的路由事件时被触发。我不想重复两次事件响应代码(在XAML中)。我可以为单个事件触发器声明指定多个路由事件吗?
单个事件的示例:
<Style.Triggers>
<EventTrigger RoutedEvent="Button.MouseEnter">
<--XAML MAGIC-->
...
答案 0 :(得分: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>
概念是通过共享资源来减少重复代码。
希望这有帮助!