【求助】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个按钮用的同样的处理方式,重复了,请帮我修改一下吧,谢谢~
...全文
338 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
非常感谢,这就是我想要的,啥也不说了,结贴给分~~~~
  • 打赏
  • 举报
回复
显然 你并不知 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 ,求教,求教~~~~
源码链接: https://pan.quark.cn/s/a4b39357ea24 微信小程序是由腾讯公司设计的一种轻量级应用开发平台,主要面向移动设备,旨在为用户带来无需下载安装即可直接使用的应用服务体验。在微信小程序的开发实践中,"模仿美团菜单 swiper分类菜单"是一项常见的技术应用,其目的是达成与美团外卖应用相似的交互模式,使用户能够轻松地浏览和挑选各种商品或服务。 在微信小程序的技术体系中,`swiper`组件属于轮播图功能模块,通常用于呈现多张图片或卡片式的切换界面,能够达成动态滑动展示不同分类菜单的功能。在模拟美团菜单的应用情境下,`swiper`组件一般与`swiper-item`组件协同工作,每一个`swiper-item`对应一个分类,用户可通过左右滑动来切换不同的分类菜单。 为了达成这样的功能,首先需要在微信小程序的`json`配置文档中引入`swiper`组件,并在`wxml`结构文档中构建相应的布局代码,将每个分类以`swiper-item`的形式进行组织。同时,需要在`wxss`样式文档中定义恰当的样式,保证分类菜单的视觉呈现符合设计规范。 接下来,我们将在`js`逻辑文档中处理`swiper`的切换逻辑,通过监听`bindchange`事件来识别当前选中的分类,并根据这一信息动态获取对应的子菜单信息。为了达成类似美团的层级菜单功能,可能还需要借助`picker`或`navigator`组件来展示二级分类或商品详情。 在开发阶段,需要关注以下关键点: 1. 数据绑定:保证数据与界面之间的双向链接准确无误,以便在选择分类时即时更新显示内容。 2. 动态加载:针对大量数据,可能需要采取异步加载机制,防止一次性加载过多内容引发性能瓶颈...

8,757

社区成员

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

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