【问题标题】:Button Hover Override按钮悬停覆盖
【发布时间】:2014-08-07 04:19:29
【问题描述】:

我有一个按钮,例如:

<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}}" 样式来删除默认使用 Button 的鼠标悬停效果。但是,我仍然继续遇到鼠标悬停效果,如下所示:

鼠标悬停之前和鼠标悬停:

我试图覆盖 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>

【问题讨论】:

    标签: c# xaml mouseenter


    【解决方案1】:

    我不会尝试“阻止”它,而是将鼠标悬停事件定义为与非鼠标悬停事件相同。您可以将它们设置为相同,虽然它仍然会切换,但在视觉上看起来是相同的。

    How do you change Background for a Button MouseOver in 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>
    

    【讨论】:

    • 我更新了上面的代码,它摆脱了突出显示的 mouseenter 效果,但它现在阻止了任何 mouseenter 效果,即使我从 MouseEnter 调用 Button_StartMenu.Foreground = Brushes.Green ..
    • 您必须在触发器部分进行设置。您可以制作可重复使用的样式,而不是将所有属性放在此特定按钮上。
    • 即使我将 Style.Triggers 附在按钮的属性中,我仍然遇到同样的问题 - 它不会用上面的代码触发。您上面的代码对此没有帮助。
    • 抱歉,这是我能做的最好的了。我知道这些东西有多少应该起作用,但我通常需要一些试验和错误才能让一切按预期工作。
    • 好吧,至少要为帮助投票。我会继续玩它的。
    猜你喜欢
    • 2018-03-14
    • 2011-10-16
    • 2012-10-07
    • 2019-02-13
    • 2021-05-24
    • 2017-10-20
    • 1970-01-01
    • 2012-01-19
    相关资源
    最近更新 更多