Style 的 EventSetter 是否有可能与另一个事件处理程序并排运行?
Is it possible that the EventSetter of a Style runs side by side with another event handler?
我在 WPF 中为 Button
定义了 Style
。在那种风格中,我希望在单击按钮时更改按钮的背景。例如:
<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
具有更高的优先级?
我会使用一些 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>
Local value always takes precedence.
因此,正常的 Click 处理程序将触发,然后是您的 EventSetter。
我在 WPF 中为 Button
定义了 Style
。在那种风格中,我希望在单击按钮时更改按钮的背景。例如:
<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
具有更高的优先级?
我会使用一些 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>
Local value always takes precedence.
因此,正常的 Click 处理程序将触发,然后是您的 EventSetter。