0

WPFStyleで forを定義しました。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のほうが優先されますか?

4

2 に答える 2

1

XAML マジックを使用して Background を変更します (ただし、それは好みの問題です)。ボタンの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>
于 2016-10-01T11:52:34.373 に答える