Кнопка Hover Override

У меня есть кнопка, как таковая:

<Button HorizontalAlignment="Left" Margin="0,55,0,0" VerticalAlignment="Top" Width="350" Click="StartProcedure_Click" BorderThickness="0" Height="60" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" HorizontalContentAlignment="Left" ScrollViewer.VerticalScrollBarVisibility="Disabled" VerticalContentAlignment="Center" Padding="10,1,0,0" IsHitTestVisible="True">
            <StackPanel Orientation="Horizontal">
                <Image Source="resources\img_xraystarticon.png" Width="50" Height="50"/>
                <TextBlock TextElement.Foreground="#6a6869" Padding="5,0,0,0" VerticalAlignment="Center" FontSize="30" FontFamily="Century Gothic">Start Procedure</TextBlock>
            </StackPanel>
            <Button.Background>
                <ImageBrush ImageSource="resources\img_emptyrectbutton.png"/>
            </Button.Background>
        </Button>

Где я применил стиль Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" для удаления эффектов наведения мыши по умолчанию с помощью кнопки. Тем не менее, я все еще продолжаю испытывать эффект наведения мыши, как показано здесь:

введите здесь описание изображения

До Mouseover и с Mouseover:

введите здесь описание изображения

Я безуспешно пытался переопределить событие MouseEnter (я подтвердил, что мое событие MouseEnter запускается, но я не могу отменить свойство, установленное с помощью MouseEnter по умолчанию, с помощью приведенного выше).

Что мне нужно сделать, чтобы избежать вышеперечисленного?

Спасибо!

РЕДАКТИРОВАТЬ:

Я ввел приведенный ниже код, но теперь я не могу заставить функцию MouseEnter выполняться должным образом (я хочу, чтобы текст изменил цвет, но я не вижу, чтобы это происходило):

<Button Name="Button_StartMenu" HorizontalAlignment="Left" Margin="0,55,0,0" VerticalAlignment="Top" Width="350" Click="StartProcedure_Click" BorderThickness="0" Height="60" HorizontalContentAlignment="Left" ScrollViewer.VerticalScrollBarVisibility="Disabled" VerticalContentAlignment="Center" Padding="10,1,0,0" IsHitTestVisible="True" MouseEnter="Button_MouseEnter">
            <Button.Background>
                <ImageBrush ImageSource="resources\img_emptyrectbutton.png"/>
            </Button.Background>
            <Button.Style>
                <Style TargetType="{x:Type Button}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type Button}">
                                <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
                                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Button.Style>
            <StackPanel Orientation="Horizontal">
                <Image Source="resources\img_xraystarticon.png" Width="50" Height="50"/>
                <TextBlock TextElement.Foreground="#6a6869" Padding="5,0,0,0" VerticalAlignment="Center" FontSize="30" FontFamily="Century Gothic"><Run Text="Start Procedure"/></TextBlock>
            </StackPanel>
        </Button>

person RootAtShell    schedule 06.08.2014    source источник


Ответы (1)


Вместо того, чтобы пытаться «предотвратить» это, я бы определил, что событие наведения мыши будет отображаться так же, как и без наведения мыши. Вы можете установить их обоих одинаковыми, и хотя они все равно будут переключаться, визуально они будут выглядеть одинаково.

Как изменить фон для кнопки MouseOver в WPF?

       <Button.Style>
            <Style TargetType="Button">
                <Setter Property="Background" Value="Green"/>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" Value="Green"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
person bowlturner    schedule 06.08.2014
comment
Я обновил свой приведенный выше код, который избавился от эффекта выделения мышью, но теперь он предотвращает захват любого эффекта мыши, даже когда я вызываю Button_StartMenu.Foreground = Brushes.Green из MouseEnter.. - person RootAtShell; 07.08.2014
comment
Вам нужно будет установить это в разделе триггера. Вы можете создать стиль, который можно использовать повторно, вместо того, чтобы помещать все свойства в эту конкретную кнопку. - person bowlturner; 07.08.2014
comment
Даже если я включу Style.Triggers в свое свойство для кнопки, у меня все еще будет та же проблема — она не срабатывает с приведенным выше кодом. Ваш код выше не помогает с этим. - person RootAtShell; 07.08.2014
comment
Извини, это лучшее, что я могу сделать. Я знаю, как многие из этих вещей должны работать, но обычно мне нужны пробы и ошибки, чтобы заставить все работать как положено. - person bowlturner; 07.08.2014
comment
Ну, по крайней мере, проголосуйте за помощь. Я буду продолжать играть с ним. - person RootAtShell; 07.08.2014
comment
Спасибо! И жаль, что это не было больше помощи. - person bowlturner; 07.08.2014
comment
А как насчет универсальной Windows? Style.triggers больше не присутствуют. - person matthewsheets; 21.07.2015