xaml中的按钮mousehover事件的图像背景更改

问题描述:

我是WPF新手。我尝试用按钮创建一个菜单。我设置图像作为Button的背景。但图像背景更改鼠标悬停事件。xaml中的按钮mousehover事件的图像背景更改

我的XAML文件的代码,

<Menu x:Name="MainMenu" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Foreground="White" Background="Black" IsTabStop="True" IsTextSearchEnabled="True" Focusable="False" > 
      <Button x:Name="Menu_btnAdd" Cursor="Arrow" ToolTip="Add" Height="100" Width="100" TabIndex="1" IsEnabled="true" IsDefault="True" IsHitTestVisible="true" 
        Click="Menu_btnAdd_Click" MouseDown="Menu_btnAdd_MouseDown" > 
       <Button.OpacityMask> 
        <ImageBrush ImageSource="Images/Menu_Drawings.png"> 

        </ImageBrush> 
       </Button.OpacityMask> 
       <Button.Foreground> 
        <ImageBrush ImageSource="Images/Menu_Drawings.png"/> 
       </Button.Foreground> 
       <Button.BorderBrush> 
        <ImageBrush ImageSource="Images/Menu_Drawings.png"/> 
       </Button.BorderBrush> 
       <Button.Background> 
        <ImageBrush ImageSource="Images/Menu_Drawings.png"/> 
       </Button.Background> 

      </Button> 
      <Button x:Name="Menu_btnView" Cursor="Arrow" ToolTip="View" Height="100" Width="100" TabIndex="1" IsEnabled="true" IsDefault="True" 
        > 
       <Button.OpacityMask> 
        <ImageBrush ImageSource="Images/Menu_Components.png"> 

        </ImageBrush> 
       </Button.OpacityMask> 
       <Button.Foreground> 
        <ImageBrush ImageSource="Images/Menu_Components.png"/> 
       </Button.Foreground> 
       <Button.BorderBrush> 
        <ImageBrush ImageSource="Images/Menu_Components.png"/> 
       </Button.BorderBrush> 
       <Button.Background> 
        <ImageBrush ImageSource="Images/Menu_Components.png"/> 
       </Button.Background> 

      </Button> 
     </Menu> 

鼠标悬停按钮的背景结果: enter image description here 请指引我,我需要什么属性来设置,所以我的背景图像没有变化?

鼠标悬停是按钮的默认可视状态正在启用。为了克服这一点,你必须覆盖默认模板按钮并摆脱这一点。

但是,我可以建议一种解决方法,看看它是否适合你。不要将图片设置为背景,请将其添加为按钮的内容

<Button> 
    <Image Source="Images/Menu_Drawings.png" Stretch="Fill"/> 
</Button> 

其他选项将按钮的覆盖默认模板,摆脱鼠标悬停的触发器。 (在删除这些触发器后添加下面的示例)在资源下声明模板并应用于您希望具有该外观的按钮。

<Menu> 
    <Menu.Resources> 
     <ControlTemplate x:Key="ModifiedTemplate" TargetType="ButtonBase"> 
      <Border BorderThickness="{TemplateBinding Border.BorderThickness}" 
        BorderBrush="{TemplateBinding Border.BorderBrush}" 
        Background="{TemplateBinding Panel.Background}" 
        Name="border" 
        SnapsToDevicePixels="True"> 
       <ContentPresenter RecognizesAccessKey="True" 
            Content="{TemplateBinding ContentControl.Content}" 
            ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" 
            ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" 
            Name="contentPresenter" 
            Margin="{TemplateBinding Control.Padding}" 
            HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" 
            VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" 
            SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" 
            Focusable="False" /> 
      </Border> 
      <ControlTemplate.Triggers> 
       <Trigger Property="Button.IsDefaulted" Value="True"> 
        <Setter Property="Border.BorderBrush" TargetName="border"> 
         <Setter.Value> 
          <DynamicResource ResourceKey="{x:Static SystemColors.HighlightBrushKey}" /> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
       <Trigger Property="ToggleButton.IsChecked" Value="True"> 
        <Setter Property="Panel.Background" TargetName="border"> 
         <Setter.Value> 
          <SolidColorBrush>#FFBCDDEE</SolidColorBrush> 
         </Setter.Value> 
        </Setter> 
        <Setter Property="Border.BorderBrush" TargetName="border"> 
         <Setter.Value> 
          <SolidColorBrush>#FF245A83</SolidColorBrush> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
       <Trigger Property="UIElement.IsEnabled" Value="False"> 
        <Setter Property="Panel.Background" TargetName="border"> 
         <Setter.Value> 
          <SolidColorBrush>#FFF4F4F4</SolidColorBrush> 
         </Setter.Value> 
        </Setter> 
        <Setter Property="Border.BorderBrush" TargetName="border"> 
         <Setter.Value> 
          <SolidColorBrush>#FFADB2B5</SolidColorBrush> 
         </Setter.Value> 
        </Setter> 
        <Setter Property="TextElement.Foreground" TargetName="contentPresenter"> 
         <Setter.Value> 
          <SolidColorBrush>#FF838383</SolidColorBrush> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Menu.Resources> 
    <Button Template="{StaticResource ModifiedTemplate}"> 
     <Button.Background> 
      <ImageBrush ImageSource="Images/Menu_Drawings.png"/> 
     </Button.Background> 
    </Button> 
</Menu> 
+0

第一个想法是good.Can任何选项来改变鼠标悬停事件的颜色,而突出的按钮 – 2014-10-04 10:29:10

+0

对于图像工作,你需要重写默认的模板,并提供自己的一套画笔就像第二个被提供样品。 – 2014-10-04 11:38:46