我在WPF中为Style
定义了Button
。在那种风格中,我想要在单击按钮时更改按钮的背景。例如:
<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
具有更高优先级?
答案 0 :(得分:1)
我会使用一些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>
答案 1 :(得分:1)
Local value always takes precedence.
因此,正常的Click处理程序将触发,然后是EventSetter。