Возможно ли, чтобы EventSetter стиля работал рядом с другим обработчиком событий?
Я определил Style
для Button
в WPF. В этом стиле я хочу, чтобы фон кнопки менялся при нажатии. Например:
<Style x:Key="TheButton" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Margin" Value="5"/>
<EventSetter Event="Click" Handler="ChangeBackground"/>
</Style>
и в коде позади:
private void ChangeBackground(object sender, RoutedEventArgs e)
{
var btn = sender as Button;
if(btn != null)
btn.Background = Brushes.SeaShell;
}
Так что это общий стиль, который применяется к нескольким Button
с, каждый выполняет свою работу. Возможно ли, что описанный выше обработчик событий может работать вместе с другим обработчиком событий, который указывается для каждой кнопки при их нажатии?
Если я укажу Click
обработчик для кнопки, которая использует этот стиль, переопределяет EventSetter
или EventSetter
имеет более высокий приоритет?
2 ответа
Локальное значение всегда имеет приоритет.
Таким образом, обычный обработчик клика сработает, а затем ваш EventSetter.
Я бы использовал магию XAML для изменения фона (но это дело вкуса). Click
Обработчик кнопки работает параллельно.
<Style TargetType="Button">
<Style.Triggers>
<EventTrigger RoutedEvent="Click">
<BeginStoryboard>
<Storyboard>
<ColorAnimation To="#FFFF0000" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>