删除WPF按钮的鼠标悬停效果

时间:2013-02-02 07:53:21

标签: c# wpf xaml wpf-controls mouseover

我找不到这个问题的简单答案。

我在WPF中创建了Button并为其提供了背景图片。首先我的问题是边界,但后来我能够用

删除它
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"

现在的问题是窗口MouseOver效果是可见的。是否有一种简单的方法可以删除它?我尝试用Value替换Image。它工作但我无法再在按钮上设置Text

<Button x:Name="gameBtnAnswer1" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" Cursor="Hand" Padding="-4" Margin="0,0,18,0" Height="38" Width="336" HorizontalAlignment="Left" FontSize="16" Foreground="White" Click="gameBtnAnswer1_Click" BorderThickness="0" Focusable="False">
    <Button.Background>
        <ImageBrush ImageSource="themes/blue/button_answer.png" Stretch="None" TileMode="Tile"/>
    </Button.Background>
    <Button.Content>
        Hier steht die Antwort #1
    </Button.Content>
</Button>

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是重新定义ControlTemplate按钮。 Here the msdn doc

没有触发器的示例模板:

<Style TargetType="Button">
  <Setter Property="SnapsToDevicePixels" Value="true"/>
  <Setter Property="OverridesDefaultStyle" Value="true"/>
  <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
  <Setter Property="MinHeight" Value="23"/>
  <Setter Property="MinWidth" Value="75"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="Button">
        <Border 
          x:Name="Border"  
          CornerRadius="2" 
          BorderThickness="1"
          Background="{StaticResource NormalBrush}"
          BorderBrush="{StaticResource NormalBorderBrush}">
          <ContentPresenter 
            Margin="2"
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            RecognizesAccessKey="True"/>
        </Border>
        <ControlTemplate.Triggers>




        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

答案 1 :(得分:0)

首先想到的是重新设计按钮的模板。在模板中,您将看到具有许多状态的VisualStateManager类。其中一个状态是MouseOver。在该MouseOver声明中,您可以放置​​任何想要使Button按您喜欢的方式显示的内容。例如,VisualStateManager中也应该有一些默认的可视状态,这样你就可以将declration从默认的可视状态复制到mouseover视觉状态,它们将是相同的。