0

プログラム内のすべてのボタンの状態を変更しようとしています

ボタンのこのスタイルを取得しました:

 <Style TargetType="{x:Type Button}">
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="StateMouseOver">
                                    <Storyboard>
                                        <ColorAnimation  Storyboard.TargetName="UpperBorder" Duration="00:00:0.5"  Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" To="#FF5086C4"/>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="StatePressed">
                                    <Storyboard>
                                        <ColorAnimation  Storyboard.TargetName="UpperBorder" Duration="00:00:0.05"  Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" To="#FF21214E"/>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="StateDisabled">
                                    <Storyboard>
                                        <DoubleAnimation  Storyboard.TargetName="UpperBorder" Duration="00:00:0.5"  Storyboard.TargetProperty="(UIElement.Opacity)" To="0"/>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Border x:Name="Lower" Cursor="Hand"   BorderThickness="1" CornerRadius="4" Background="Gray" ></Border>
                        <Border MouseEnter="UpperBorder_MouseEnter" x:Name="UpperBorder" Cursor="Hand"  CornerRadius="4"   Background="#FF0657E8">
                            <Border.Effect>
                                <DropShadowEffect BlurRadius="10"/>
                            </Border.Effect>
                        </Border>
                        <ContentPresenter Cursor="Hand" Margin="8,8,8,8"  HorizontalAlignment="Center" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

このイベントでは:プログラム内のすべてのボタンMouseEnter="UpperBorder_MouseEnterに変更が反映されるようにしたい(ただし、関数 VisualStateManager.GoToState は特定のボタンのみをパラメーターとして受け取る) 。

4

1 に答える 1

0

ボタンには、CommonStates グループに既に MouseOver 状態があります。ボタンのスタイルとテンプレートを参照してください。マウスオーバー時に Button クラスに自動設定される状態。

それはあなたが望むものですか?

于 2013-05-21T12:14:40.200 に答える