【求助】WPF 按钮背景图片ImageBrush问题,如何去除我下面代码的重复的代码?

技术型萨达哈鲁 2014-09-01 10:21:19
问题描述:现在我有8个按钮,我需要给这八个按钮赋不同的背景图片ImageBrush,鼠标经过时改变背景图片;
资源:项目中建了一个Images文件夹,下面有16张图片:01.jpg 02.jpg 03.jpg ....(鼠标未经过时的图片) a1.jpg a2.jpg a3.jpg ....(鼠标经过时按钮显示的图片) 16张图片各不相同;
我的代码:

<Button name="button1" Width="50" Height="50">
<Style TargetType = "Button">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="\Images\01.jpg" />
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" >
<Setter.Value>
<ImageBrush ImageSource="\Images\a1.jpg" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button>

<Button name="button2" Width="50" Height="50">
<Style TargetType = "Button">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="\Images\02.jpg" />
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" >
<Setter.Value>
<ImageBrush ImageSource="\Images\a2.jpg" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button>

<Button name="button3" Width="50" Height="50">
<Style TargetType = "Button">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="\Images\03.jpg" />
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" >
<Setter.Value>
<ImageBrush ImageSource="\Images\a3.jpg" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button>

<Button name="button4" Width="50" Height="50">
<Style TargetType = "Button">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="\Images\04.jpg" />
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" >
<Setter.Value>
<ImageBrush ImageSource="\Images\a4.jpg" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button>

<Button name="button5" Width="50" Height="50">
<Style TargetType = "Button">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="\Images\05.jpg" />
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" >
<Setter.Value>
<ImageBrush ImageSource="\Images\a5.jpg" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button>

<Button name="button6" Width="50" Height="50">
<Style TargetType = "Button">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="\Images\06.jpg" />
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" >
<Setter.Value>
<ImageBrush ImageSource="\Images\a6.jpg" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button>

<Button name="button7" Width="50" Height="50">
<Style TargetType = "Button">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="\Images\07.jpg" />
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" >
<Setter.Value>
<ImageBrush ImageSource="\Images\a7.jpg" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button>

<Button name="button8" Width="50" Height="50">
<Style TargetType = "Button">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="\Images\08.jpg" />
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" >
<Setter.Value>
<ImageBrush ImageSource="\Images\a8.jpg" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button>



显然,上述代码8个按钮用的同样的处理方式,重复了,请帮我修改一下吧,谢谢~
...全文
197 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Veary 2014-09-17
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
显然 你并不知 WPF中还有 Converter这个类的定义。 图片名称格式有规律,就可以使用Converter转换类来对你的ImageSource进行判断处理,转换类中接受参数,该参数就是区分是那个button,比如你的Button1,你就可以传 1,;然后根据button的标示,再返回属于button1的图片路径。 参见:http://msdn.microsoft.com/zh-cn/library/windows/apps/windows.ui.xaml.data.ivalueconverter.aspx
这个挺好 能做个例子给我发过来嘛 本人愚钝 xveary@163.com
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
显然 你并不知 WPF中还有 Converter这个类的定义。 图片名称格式有规律,就可以使用Converter转换类来对你的ImageSource进行判断处理,转换类中接受参数,该参数就是区分是那个button,比如你的Button1,你就可以传 1,;然后根据button的标示,再返回属于button1的图片路径。 参见:http://msdn.microsoft.com/zh-cn/library/windows/apps/windows.ui.xaml.data.ivalueconverter.aspx
非常感谢,这就是我想要的,啥也不说了,结贴给分~~~~
exception92 2014-09-01
  • 打赏
  • 举报
回复
显然 你并不知 WPF中还有 Converter这个类的定义。 图片名称格式有规律,就可以使用Converter转换类来对你的ImageSource进行判断处理,转换类中接受参数,该参数就是区分是那个button,比如你的Button1,你就可以传 1,;然后根据button的标示,再返回属于button1的图片路径。 参见:http://msdn.microsoft.com/zh-cn/library/windows/apps/windows.ui.xaml.data.ivalueconverter.aspx
  • 打赏
  • 举报
回复
我将其放在了Windows的资源里面,但是现在所有的按钮背景图片都是一样的,鼠标经过改变的图片也是一样的,请问怎样做,这是我的一段代码:

<Window ....>
<Window.Resources>
<Style TargetType="Button">
<Setter Property="Background">
    <Setter.Value> 
      <ImageBrush ImageSource="\Images\01.jpg" />
    </Setter.Value>
   </Setter>
    <Style.Triggers>
     <Trigger Property="IsMouseOver" Value="True">
       <Setter Property="Background" >
        <Setter.Value> 
      <ImageBrush ImageSource="\Images\a1.jpg" />
    </Setter.Value>
   </Setter>
     </Trigger>
    </Style.Triggers>
</Style>
</Window.Resources>
</Window>
<Grid>
<Button Name="button1" />
<Button Name="button2" />
<Button Name="button3" />
<Button Name="button4" />
<Button Name="button5" />
<Button Name="button6" />
<Button Name="button7" />
<Button Name="button8" />
</Grid>
现在,所有的按钮都是01.jpg,鼠标经过按钮时,所有的按钮都改变为a1.jpg ,求教,求教~~~~

8,731

社区成员

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

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