禁用鼠标悬停效果

Kev*_*xes 6 wpf

我有一个带背景图像的wppf按钮.

当我将鼠标悬停在背景上时将显示空白并显示一个按钮.

如何禁用鼠标效果?

<Button BorderBrush="{x:Null}" Content="Reset" BorderThickness="0"Foreground="White" Focusable="False">
                        <Button.Background>
                            <ImageBrush ImageSource="button.png" />
                        </Button.Background>
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 13

这是我如何禁用按钮上的可视鼠标悬停效果.我离开了一些设置只是为了让你感觉如何玩触发器和东西,随意尝试!

<Style TargetType="Button" x:Key="ImageButton" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border Name="border" 
                        BorderThickness="{TemplateBinding BorderThickness}"
                        Padding="{TemplateBinding Padding}" 
                        BorderBrush="{TemplateBinding BorderBrush}" 
                        CornerRadius="5"
                        Background="{TemplateBinding Background}">
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="BorderBrush" Value="Gainsboro" />
                    </Trigger>
                    <Trigger Property="IsEnabled" Value="false">
                        <Setter Property="Opacity" Value="0.25" />
                        <Setter Property="BorderBrush" Value="Transparent" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

编辑:使用"BasedOn"+设置FocusVisualStyle为null(前2行)摆脱鼠标悬停效果.其他一切都只是例子.我在那里添加了一个边框,以便通过触发器进行播放(因为我想要一个自定义鼠标悬停效果).

  • 我不同意这篇文章.前两行在我的应用中没有效果.我在其他地方读过你不允许部分覆盖模板,并且你必须制作一个完整而完整的模板才能工作.不幸的是,我还没有找到一个有效的解决方案,但这篇文章中的建议肯定对我不起作用. (2认同)

MrD*_*osu 8

ControlTemplate中的Button背景属性将被触发覆盖.
您可以重做整个ControlTemplate并省略背景更改,或者只是添加图像作为您Button喜欢的内容,以避免所有这些复杂情况:

<Button.Content>
    <Image Source="button.png" />
</Button.Content>
Run Code Online (Sandbox Code Playgroud)

或者如果你还需要那里的文字:

<Button.Content>
    <Grid>
        <Image Source="button.png" />
        <TextBlock Text="Reset" VerticalAlignment="Center" HorizontalAlignment="Center" />
    <Grid>
</Button.Content>
Run Code Online (Sandbox Code Playgroud)

  • 感谢非常简单的解决方案 (2认同)