我有几个GUI控件元素,其中一些应该在鼠标交互(MouseEnter,MouseLeave)时生成相同的操作(代码后台函数调用)。
[编辑]我正在我的事件处理程序中执行一些非样式相关功能。
目前,我在每个控件中使用事件属性:
<Button Name="Button" Content="Button 1"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave"
PreviewMouseDown="Button1_PreviewMouseDown" PreviewMouseUp="Button1_PreviewMouseUp" />
<Button Name="NotInteractingButton" Content="Button 2"
/><!-- this button has no MouseOver-effects -->
<ToggleButton Content="ToggleButton"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave" />
<!-- needs to use IsMouseDirectlyOver on the slider knob... -->
<Slider Name="HorizontalSlider"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave"
ValueChanged="Slider_ValueChanged" />
<Slider Name="VerticalSlider" Orientation="Vertical"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave"
ValueChanged="Slider_ValueChanged" />
在这个例子中,许多控件都在调用相同的两个函数"GeneralMouseEnter"和"GeneralMouseLeave",我希望能够定义一个样式或类似的东西来封装这种行为。
[编辑-澄清]
这应该后来成为一种插件。
(将代码和XAML文件包含在任何GUI程序中,并在每个交互式控件元素上设置样式...)
从我在网上找到的内容来看,我可以像这个例子一样使用EventTriggers
:
<Style.Triggers>
<EventTrigger RoutedEvent="Click">
<EventTrigger.Actions>
<BeginAction TargetName="SomeAction" />
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
我不知道如何在动作中调用函数。
- 通过创建具有动作+触发器的样式并应用于每个控件,是否可以获得此功能?如何操作?
- 如何将多个样式(用于多个交互事件)分配给一个控件?
- 也许还有更简洁的方法来实现此行为吗?
- [编辑]
如果我想在GUI中所有滑块上进行鼠标交互怎么办?
BasedOn="..."
结合使用。 - Martin HenningsEventSetter
中的事件必须是RoutedEvent
(不适用于TargetUpdated
)。 - BrainsTargetUpdated
,存在一个解决方法Binding.TargetUpdated
。 - Brains