原文:WPF遍历当前容器中某种控件的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37591671/article/details/79528845

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遍历当前容器中某种控件的方法相关推荐

  1. qt 给容器中的控件添加信号槽

    之前做的将动态创建的控件,放到容器中,从而可以使用数组访问,现在记一下怎样给它们设置事件. 1.实现思路: 比如我创建了10个按钮,每创建一个,我就构建一个信号槽的连接.由于我不能构建太多的槽函数,所 ...

  2. 在VS2010中ActiveX控件注册方法,使用regsvr32命令

    上一篇小编展示了如何设置VS2010自带的ActiveX控件的容器测试程序,现在为大家演示一下如何注册ActiveX控件. 首先简单了解一下ActiveX控件的知识,ActiveX控件:简单来说,就是 ...

  3. VC中TabControl控件使用方法(转载)

    最近需要用Qt做上位机,觉得Qt和之前用过的VC还是比较熟的,所以首先熟悉一下以后要用在Qt下的控件,另外也熟悉一下有很久没有摸过的VC. 下面我们来看一下使用步骤. 1. 新建一个MFC工程,取名x ...

  4. java tabcontrol,VC中TabControl控件使用方法

    最近需要用Qt做上位机,觉得Qt和之前用过的VC还是比较熟的,所以首先熟悉一下以后要用在Qt下的控件,另外也熟悉一下有很久没有摸过的VC. 下面我们来看一下使用步骤. 1. 新建一个MFC工程,取名x ...

  5. .net c# 中获得GridView的EmptyDataTemplate中的控件的方法(转)

    拖了一个GridView到页面,当没有数据时在EmptyDataTemplate中显示添加的TextBox,但EmptyDataTemplate中不像FooterTemplate可以直接 TextBo ...

  6. WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探

    原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探 最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感觉WPF的开发思 ...

  7. 有关WPF中DataGrid控件的基础应用总结

    基础说明 DataGrid是WPF提供的基础控件,它可以非常轻松的呈现出一张表格,本文章会按照从易到难的顺序依次将DataGrid的使用方法进行解说,除了MSDN上给出的最基本的例子之外,给出了三个比 ...

  8. WPF中通过控件Margin属性设置控件位置

    WPF中通过控件Margin属性设置控件位置 一.Margin属性简介 二.Margin在cs文件中定义 三.Margin设置控件位置 四.参考文档 一.Margin属性简介 在使用WPF进行页面设计 ...

  9. WPF中一个控件绑定另一个控件的属性

    原文:WPF中一个控件绑定另一个控件的属性 如同一个Grid中的一个按钮根据另一个按钮的显示与否作出不同的响应: 绑定的时候通过ElementName来指定控件 <Grid Margin=&qu ...

最新文章

  1. R构建KNN多分类模型
  2. Linux: debian/ubuntu下安装和使用Java 8
  3. js 函数调用顺序研究
  4. 第五周-第11章节-Python3.5-内置模块详解之Xml模块
  5. 视频智能去水印:从数学建模到工程实现
  6. 在ubuntu系统中删除软件的三种最佳方法
  7. wordpress阿里百秀主题v7.7
  8. opencv-api houshlinesp
  9. redis持久化、内存优化、过期、LRU内存
  10. axivion和astree_基于LabVIEW的IVI编程 IVI Programme Based on LabVIEW.pdf
  11. 19【推荐系统10】从POLY2、FM到FFM——自动特征交叉的解决方案
  12. arcgis悬挂点修改_ArcGIS拓扑编辑修正点位置的问题
  13. 中病毒了文件夹变exe文件找到方法
  14. c语言做相册影集,制作DIY相册影集教程-如何制作影集
  15. VB中产生10个不重复的随机数
  16. 什么是CDN,CDN有什么作用?
  17. Linux学习笔记 Day0
  18. 20190713 关于session串号问题的记录
  19. geogebra动态数学软件,实用工具
  20. 2021-09-05-数字身份与区块链

热门文章

  1. Java给定一个字符串数组,判断每个字符出现次数
  2. Exchange Server 2016管理系列课件50.DAG管理之激活数据库副本
  3. 史上最好记的神经网络结构速记表(上)
  4. 企业版Java EE正式易主 甲骨文再次放手
  5. Centos 7 搭建.net web项目
  6. 【转载】【面试题】你是一个测试工程师,如何保证软件质量?
  7. 代码的坏味道之一——译自《重构》
  8. 几个常用的JS代码.
  9. delphi tclientsocket接收不到返回数据_RS—485中教你主站发送报文结构、从站返回报文结构?系列11...
  10. 黑马C++设计模式1