wpf如何给button设置图片触发器

bcc222 2014-03-27 03:00:11
最近做一个wpf的页面,需要对button重新进行定义,我就做了如下定义

<ImageBrush ImageSource="f:\cc.png" x:Key="ButtonNormalImage"/>
<Style x:Key="ButtonStyle1" TargetType="{x:Type Button}">
<Setter Property="BorderBrush" Value="{StaticResource ButtonNormalBorder}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Background" Value="{StaticResource ButtonNormalImage}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border BorderBrush="{TemplateBinding BorderBrush}"
x:Name="btnBorder"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="true">

<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}" RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="#ADADAD"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" >
<Setter.Value>
<ImageBrush ImageSource="f:\bb.jpg"></ImageBrush>
</Setter.Value>
</Setter>
</Trigger>

</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
针对一个单个的button这样就ok了,但是如果在button里面再自定义一个background,如下
<Button x:Name="button" Content="other" Margin="163,61,279,209" Height="50" Width="70"
Click="button_Click" Style="{DynamicResource ButtonStyle1}" Foreground="White" >
<Button.Background>
<ImageBrush ImageSource="f:\aa.jpg"></ImageBrush>
</Button.Background>
</Button>
则该按钮的触发事件就不起作用了,只能在程序样式里面自己去定义么?
如果我有10个按钮,每一个按钮的image都不一样的话,我是不是要写10个样式?
如果我需要那种在按钮上设置两个值,如img1="aa.jpg" img2="bb.jpg",然后让这两个值分别作为按钮的触发器的背景的话
是不是要写自定义控件?
...全文
498 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gw6328 2014-03-28
  • 打赏
  • 举报
回复
在template里面再嵌一个button吧. 不知道你要的是不是这咱效果. 理认引图片不要触发器,你是想在button里面有图片,还有工其它的,然后再给图片加触发器吗? 如果是这样就再嵌一个button,为button加触发器.
bcc222 2014-03-28
  • 打赏
  • 举报
回复
引用 1 楼 jiangzhanchang 的回复:
楼主,你可以考虑适当的抽象,把相同的属性放到基样式中。
即便是这样的话,我肯定最少也要给每一个button设置一个样式吧,里面需要包含两张图片以及重写triger 能不能写成 <button img1="xxxx" img2="xxxx" width="20"></button> 另外,想问的那个问题 为什么在button自己上设置了background,对应触发器就不起作用了呢?
Eric_Jiang 2014-03-27
  • 打赏
  • 举报
回复
楼主,你可以考虑适当的抽象,把相同的属性放到基样式中。

8,731

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧