TheButlerDidIt
TheButlerDidIt

Reputation: 699

How do I keep WPF Button Template from changing All Buttons When Moused Over?

I am working with a custom template for a WPF template. For the most part it is working, however, when I mouse-over a button it changes the text color for all the buttons on the same screen, which is unintended.

<Style  TargetType="{x:Type Button}">
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="OverridesDefaultStyle"
      Value="true" />
    <Setter Property="FocusVisualStyle"
      Value="{DynamicResource ButtonFocusVisual}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border TextBlock.Foreground="{DynamicResource AlternateFontColor}"
                        TextBlock.FontFamily="Segoe UI"
                        TextBlock.FontWeight="Bold"                            
                        x:Name="Border"
                        CornerRadius="0"
                        BorderThickness="2" >
                    <Border.BorderBrush>
                        <SolidColorBrush Color="{DynamicResource ControlMouseOverColor}" />
                    </Border.BorderBrush>
                    <Border.Background>
                        <SolidColorBrush Color="{DynamicResource ColorBackgroundColor}" />
                    </Border.Background>
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualStateGroup.Transitions>
                                <VisualTransition GeneratedDuration="0:0:0.0" />
                                <VisualTransition GeneratedDuration="0"
                              To="Pressed" />
                            </VisualStateGroup.Transitions>
                            <VisualState x:Name="Normal" />
                            <VisualState x:Name="MouseOver">
                                <Storyboard>
                                    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                  (SolidColorBrush.Color)"
                                            Storyboard.TargetName="Border">
                                        <EasingColorKeyFrame KeyTime="0"
                                     Value="{StaticResource ControlMouseOverColor}" />
                                    </ColorAnimationUsingKeyFrames>
                                    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)"
                                                                 Storyboard.TargetName="Border">
                                        <EasingColorKeyFrame KeyTime="0" Value="{StaticResource ControlBorderMouseOverColor}" />
                                    </ColorAnimationUsingKeyFrames>
                                    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="Border">
                                        <EasingColorKeyFrame KeyTime="0" Value="White" />
                                    </ColorAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Pressed">
                                <Storyboard>
                                    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                  (SolidColorBrush.Color)"
                                            Storyboard.TargetName="Border">
                                        <EasingColorKeyFrame KeyTime="0"
                                     Value="{StaticResource ControlPressedColor}" />
                                    </ColorAnimationUsingKeyFrames>
                                    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)"
                                                                 Storyboard.TargetName="Border">
                                        <EasingColorKeyFrame KeyTime="0" Value="{StaticResource ControlBorderMouseOverColor}" />
                                    </ColorAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <ContentPresenter Margin="2"
                                      HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
                                      VerticalAlignment="Center"
                                      RecognizesAccessKey="True"
                                      TextBlock.TextAlignment="Center"

                                      >                                        

                    </ContentPresenter>

                </Border>
                <!-- Triggers -->
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Upvotes: 0

Views: 809

Answers (1)

RockWorld
RockWorld

Reputation: 1288

Update Style declaration as

 <Style  x:Key="buttonStyle"  TargetType="{x:Type Button}">

and assign style to buttons if they have to be styled as

 <Button Style="{DynamicResource buttonStyle}">H2</Button>

Other buttons won't inherit style after declaring x:Key

Upvotes: 1

Related Questions