Как установить функцию события с помощью стиля?

У меня есть несколько элементов управления GUI, некоторые из которых должны генерировать одно и то же действие (вызов функции кода программной части) при взаимодействии с мышью (MouseEnter, MouseLeave).
[edit] Я выполняю некоторые функции, не связанные со стилем, в моих обработчиках событий.
Прямо сейчас я использую атрибуты событий в каждом элементе управления:

<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 ", я хотел бы иметь возможность определить стиль или что-то подобное, чтобы инкапсулировать это поведение.

[edit - clarification]
This is supposed to become a kind of plugin later on.
(Include code and XAML files to any GUI program and set a style on each interactive control element...)

From what I found on the web, I can use EventTriggers like in this example:

<Style.Triggers>
  <EventTrigger RoutedEvent="Click">
    <EventTrigger.Actions>
      <BeginAction TargetName="SomeAction" />
    </EventTrigger.Actions>
  </EventTrigger>
</Style.Triggers>

I don't know though if and how to call functions within an action.

  • Is it possible to get this functionality by creating a style with action + trigger to be applied to each control? How to do that?
  • How do I assign multiple styles (for multiple interaction events) to one control?
  • Is there maybe even a cleaner way to achieve this behavior?
  • [править]
    Что, если я хочу, например, иметь взаимодействие с мышью на всех ползунках в моем графическом интерфейсе?
34
задан Dave Clemmer 12 August 2011 в 20:16
поделиться