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>
鼠标悬停按钮的背景结果: 请指引我,我需要什么属性来设置,所以我的背景图像没有变化?
答
鼠标悬停是按钮的默认可视状态正在启用。为了克服这一点,你必须覆盖默认模板按钮并摆脱这一点。
但是,我可以建议一种解决方法,看看它是否适合你。不要将图片设置为背景,请将其添加为按钮的内容。
<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>
第一个想法是good.Can任何选项来改变鼠标悬停事件的颜色,而突出的按钮 – 2014-10-04 10:29:10
对于图像工作,你需要重写默认的模板,并提供自己的一套画笔就像第二个被提供样品。 – 2014-10-04 11:38:46