WPF遍历当前容器中某种控件的方法
WPF遍历当前容器中某种控件的方法
- WPF遍历当前容器中某种控件的方法
- 1.目的:
- 2.实现思路:
1.目的:
在设计界面的时候遇到了这样一个问题:一个窗口中有六个按钮,我希望点击某一个按钮的时候,该按钮能够高亮显示,即:更换该按钮的背景图片,点击第二个的时候,第二个高亮显示,其他按钮还是显示为普通按钮颜色,如图:
2.实现思路:
2.1 在每一次点击的时候,遍历当前容器中所有Button,但是我们这里只需要下面六个,然后根据按钮的名称,来依次给按钮背景图片赋予相应的路径,即还原到普通普片的路径;在给点击的按钮背景图片赋予高亮图片的路径。
2.2 还原到普通普片的路径
//还原到普通普片的路径public static void BackToUsedPicture(UIElement uIElement){//遍历当前容器中所有ButtonList<Button> btnList=FindChirldHelper.FindVisualChild<Button>(uIElement);foreach (var item in btnList){Image img = new Image();if (item.Name== "Weather_btn"){img.Source = new BitmapImage(new Uri("../../Images/MonitorData/weatherBUTTON.jpg", UriKind.Relative)); }else if (item.Name == "Temperature_btn"){img.Source = new BitmapImage(new Uri("../../Images/MonitorData/temperatureBUTTON.jpg", UriKind.Relative));}else if (item.Name == "Vibration_btn"){img.Source = new BitmapImage(new Uri("../../Images/MonitorData/virbrationBUTTON.jpg", UriKind.Relative));}else if (item.Name == "Stress_btn"){img.Source = new BitmapImage(new Uri("../../Images/MonitorData/stressBUTTON.jpg", UriKind.Relative));}else if (item.Name == "Deformation_btn"){img.Source = new BitmapImage(new Uri("../../Images/MonitorData/DeformationBUTTON.jpg", UriKind.Relative));}else if (item.Name == "Pedestria_btn"){img.Source = new BitmapImage(new Uri("../../Images/MonitorData/peopleBUTTON.jpg", UriKind.Relative));}item.Content = img;} }
2.3 寻找当前容器中某种控件的 方法:
public static class FindChirldHelper{public static List<T> FindVisualChild<T>(DependencyObject obj) where T : DependencyObject{try{List<T> TList = new List<T> { };for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++){DependencyObject child = VisualTreeHelper.GetChild(obj, i);if (child != null && child is T){TList.Add((T)child);List<T> childOfChildren = FindVisualChild<T>(child);if (childOfChildren != null){TList.AddRange(childOfChildren);}}else{List<T> childOfChildren = FindVisualChild<T>(child);if (childOfChildren != null){TList.AddRange(childOfChildren);}}}return TList;}catch (Exception ee){MessageBox.Show(ee.Message);return null;}}}
3.3 上端使用:
private void Weather_btn_Click(object sender, RoutedEventArgs e){ ChangeButtonToLight((Button)sender);}public void ChangeButtonToLight(Button button){ChangeButtonImage.BackToUsedPicture(this);Image img = new Image();if (button.Name == "Weather_btn"){img.Source = new BitmapImage(new Uri("../../Images/MonitorData/weatherBUTTONLight.png", UriKind.Relative));}else if (button.Name == "Temperature_btn"){img.Source = new BitmapImage(new Uri("../../images/MonitorData/temperatureBUTTONLight.png", UriKind.Relative));}else if (button.Name == "Vibration_btn"){img.Source = new BitmapImage(new Uri("../../Images/MonitorData/virbrationBUTTON.jpg", UriKind.Relative));}else if (button.Name == "Stress_btn"){img.Source = new BitmapImage(new Uri("../../Images/MonitorData/stressBUTTON.jpg", UriKind.Relative));}else if (button.Name == "Deformation_btn"){img.Source = new BitmapImage(new Uri("../../Images/MonitorData/DeformationBUTTON.jpg", UriKind.Relative));}else if (button.Name == "Pedestria_btn"){img.Source = new BitmapImage(new Uri("../../Images/MonitorData/peopleBUTTON.jpg", UriKind.Relative));}button.Content = img;}
WPF遍历当前容器中某种控件的方法相关推荐
- qt 给容器中的控件添加信号槽
之前做的将动态创建的控件,放到容器中,从而可以使用数组访问,现在记一下怎样给它们设置事件. 1.实现思路: 比如我创建了10个按钮,每创建一个,我就构建一个信号槽的连接.由于我不能构建太多的槽函数,所 ...
- 在VS2010中ActiveX控件注册方法,使用regsvr32命令
上一篇小编展示了如何设置VS2010自带的ActiveX控件的容器测试程序,现在为大家演示一下如何注册ActiveX控件. 首先简单了解一下ActiveX控件的知识,ActiveX控件:简单来说,就是 ...
- VC中TabControl控件使用方法(转载)
最近需要用Qt做上位机,觉得Qt和之前用过的VC还是比较熟的,所以首先熟悉一下以后要用在Qt下的控件,另外也熟悉一下有很久没有摸过的VC. 下面我们来看一下使用步骤. 1. 新建一个MFC工程,取名x ...
- java tabcontrol,VC中TabControl控件使用方法
最近需要用Qt做上位机,觉得Qt和之前用过的VC还是比较熟的,所以首先熟悉一下以后要用在Qt下的控件,另外也熟悉一下有很久没有摸过的VC. 下面我们来看一下使用步骤. 1. 新建一个MFC工程,取名x ...
- .net c# 中获得GridView的EmptyDataTemplate中的控件的方法(转)
拖了一个GridView到页面,当没有数据时在EmptyDataTemplate中显示添加的TextBox,但EmptyDataTemplate中不像FooterTemplate可以直接 TextBo ...
- WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探
原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探 最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感觉WPF的开发思 ...
- 有关WPF中DataGrid控件的基础应用总结
基础说明 DataGrid是WPF提供的基础控件,它可以非常轻松的呈现出一张表格,本文章会按照从易到难的顺序依次将DataGrid的使用方法进行解说,除了MSDN上给出的最基本的例子之外,给出了三个比 ...
- WPF中通过控件Margin属性设置控件位置
WPF中通过控件Margin属性设置控件位置 一.Margin属性简介 二.Margin在cs文件中定义 三.Margin设置控件位置 四.参考文档 一.Margin属性简介 在使用WPF进行页面设计 ...
- WPF中一个控件绑定另一个控件的属性
原文:WPF中一个控件绑定另一个控件的属性 如同一个Grid中的一个按钮根据另一个按钮的显示与否作出不同的响应: 绑定的时候通过ElementName来指定控件 <Grid Margin=&qu ...
最新文章
- R构建KNN多分类模型
- Linux: debian/ubuntu下安装和使用Java 8
- js 函数调用顺序研究
- 第五周-第11章节-Python3.5-内置模块详解之Xml模块
- 视频智能去水印:从数学建模到工程实现
- 在ubuntu系统中删除软件的三种最佳方法
- wordpress阿里百秀主题v7.7
- opencv-api houshlinesp
- redis持久化、内存优化、过期、LRU内存
- axivion和astree_基于LabVIEW的IVI编程 IVI Programme Based on LabVIEW.pdf
- 19【推荐系统10】从POLY2、FM到FFM——自动特征交叉的解决方案
- arcgis悬挂点修改_ArcGIS拓扑编辑修正点位置的问题
- 中病毒了文件夹变exe文件找到方法
- c语言做相册影集,制作DIY相册影集教程-如何制作影集
- VB中产生10个不重复的随机数
- 什么是CDN,CDN有什么作用?
- Linux学习笔记 Day0
- 20190713 关于session串号问题的记录
- geogebra动态数学软件,实用工具
- 2021-09-05-数字身份与区块链
热门文章
- Java给定一个字符串数组,判断每个字符出现次数
- Exchange Server 2016管理系列课件50.DAG管理之激活数据库副本
- 史上最好记的神经网络结构速记表(上)
- 企业版Java EE正式易主 甲骨文再次放手
- Centos 7 搭建.net web项目
- 【转载】【面试题】你是一个测试工程师,如何保证软件质量?
- 代码的坏味道之一——译自《重构》
- 几个常用的JS代码.
- delphi tclientsocket接收不到返回数据_RS—485中教你主站发送报文结构、从站返回报文结构?系列11...
- 黑马C++设计模式1