У меня есть несколько элементов управления 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», я хотел бы иметь возможность определить стиль или что-то подобное для инкапсуляции этого поведения.
[править - уточнение]
Это должно стать своего рода плагином позже
(Включить код и файлы XAML в любую программу с графическим интерфейсом и установить стиль для каждого интерактивного элемента управления ...)
Из того, что я нашел в Интернете, я могу использовать EventTriggers
как в этом примере:
<Style.Triggers>
<EventTrigger RoutedEvent="Click">
<EventTrigger.Actions>
<BeginAction TargetName="SomeAction" />
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
Я не знаю, если и как вызывать функции в действии.
- Возможно ли получить эту функциюпутем создания стиля с действием + триггер, который будет применяться к каждому элементу управления?Как это сделать?
- Как назначить несколько стилей (для нескольких событий взаимодействия) одному элементу управления?
- Возможно, есть даже более чистый способ достижения этого поведения?
- [править]
Что, если я хочу, скажем, взаимодействовать с мышью на всех ползунках моего графического интерфейса?