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

原文: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;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

善用Object.defineProperty巧妙找到修改某个变量的准确代码位置

2019独角兽企业重金招聘Python工程师标准>>> 我今天的工作又遇到一个难题。前端UI右下角这个按钮被设置为"禁用(disabled)"状态。 这个按钮的可用状态由属性enabled控制。我通过调试发现&#xff0c;一旦下图第88行代码执行完毕之后&#xff0c;这个按钮的…

使用 C# 开发的轻量级开源数据库 LiteDB

你好&#xff0c;这里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;实用的工具或组件&#xff0c;希望对您有用&#xff01;简介 LiteDB 是一个小型、快速、轻量级的 .NET NoSQL 嵌入式数据库&#xff0c;也就是我们常说的 K/V 数据库&#xff0c;完全用 C# …

微信小程序仿微信SlideView组件slide-view

微信小程序仿微信SlideView组件。 使用 1、安装 slide-view 从小程序基础库版本 2.2.1 或以上、及开发者工具 1.02.1808300 或以上开始&#xff0c;小程序支持使用 npm 安装第三方包。 npm install --save miniprogram-slide-view2、在需要使用 slide-view 的页面 page.json 中…

hibernate 环境搭建测试

对于hibernate的介绍&#xff0c;网络上一搜一堆&#xff0c;恐怕我写的也没前辈总结的好。这个博主总结的十分好,方便大家欣赏 http://blog.csdn.net/liujiahan629629/article/details/21442607 真正要掌握&#xff0c;还得需要自己动手&#xff0c;才能丰衣足食。所需jar包j…

C# WPF 中使用 MahApps.Metro.IconPacks 提供的图标

概述我们在桌面应用程序开发时经常会用到很多图标&#xff0c;时常我是在阿里矢量图库下载&#xff1a;https://www.iconfont.cn/&#xff0c;然后存放多项目中去引用&#xff0c;不过这样操作起来有点繁琐&#xff0c;这节我们介绍一个更加便捷的方式.用法概述Wpf 图标管理工具…

java多线程同时运行_Java实现的两个线程同时运行案例

本文实例讲述了Java实现的两个线程同时运行。分享给大家供大家参考&#xff0c;具体如下&#xff1a;/*** 两个案例同时运行案例* 1:这个两个线程并不是有规律的运行而是有没有规律的交替运行*/package com.test3;public class Demo10_3 {/*** param args*/public static void …

dotnet 用 SourceGenerator 源代码生成技术实现中文编程语言

相信有很多伙伴都很喜欢自己造编程语言&#xff0c;在有现代的很多工具链的帮助下&#xff0c;实现一门编程语言&#xff0c;似乎已不是一件十分困难的事情。我利用 SourceGenerator 源代码生成技术实现了一个简易的中文编程语言&#xff0c;核心原理是将中文编程语言翻译为 C#…

HTTP/2 规格制定完成

IETF HTTP工作者的负责人Mark Nottingham在其博客上宣布HTTP/2规格制定完成&#xff0c;接下来将是分配RFC编号和正式发表。HTTP是Web的核心技术之一&#xff0c;相比HTTP/1&#xff0c;HTTP/2的改进之处包括更快的页面加载&#xff1b;更长久的连接&#xff1b;服务器推送&…

easyui combobox java_Easyui的combobox实现动态数据级联效果

实现从数据库中动态获取对应的list集合&#xff0c;并在easyui的combobox中显示出来。实现的效果如下&#xff1a;1、数据库的表设计如图所示2、数据库中填写相关的数据&#xff0c;如图所示。如图所示【法律法规】是所属栏目&#xff0c;因此他的字段parentid是0。【中国公民出…

为什么应该默认将 Class 设为密封类?

前言最近在 dotnet/sdk 上看到一个 Issue&#xff0c;它提出了一个有趣的要求&#xff1a;默认情况下将类设置为密封类(Sealed)&#xff1f;什么是密封类&#xff1f;默认情况下&#xff0c;类是开放的&#xff0c;这意味着它是可以被继承的。例如&#xff1a;class BaseClass …

Spring工具类的使用

2019独角兽企业重金招聘Python工程师标准>>> Spring-core中提供了大量的工具类&#xff0c;常用的有StringUtils、ObjectUtils、NumberUtils、Base64Utils等&#xff0c;Spring工具类在spring-core.jar中的org.springframework.util包下。 org.springframework.util…

python作业高级FTP(第八周)

作业需求&#xff1a; 1. 用户加密认证 2. 多用户同时登陆 3. 每个用户有自己的家目录且只能访问自己的家目录 4. 对用户进行磁盘配额、不同用户配额可不同 5. 用户可以登陆server后&#xff0c;可切换目录 6. 查看当前目录下文件 7. 上传下载文件&#xff0c;保证文件一致性 8…

Edge 浏览器被爆存在 XSS 绕过漏洞

来自知名安全测试套件Burp Suite厂商PortSwigger的安全专家Gareth Heyes近日在微软Edge浏览器的内置XSS过滤器存在绕过漏洞&#xff0c;这就意味着尽管微软在Edge浏览器中进行了大量的安全策略部署&#xff0c;但用户浏览网页的时候依然有可能让攻击者通过这种方式在Edge浏览器…

来了!十大更新

面向 Windows 10 正式版用户&#xff0c;微软发布了 2022 年 10 月更新。Windows 10 版本 21H1 更新后操作系统内部版本升级至 Build 190432130/2132&#xff08;带外更新&#xff09;。Windows 10 版本 21H2 更新后操作系统内部版本升级至 Build 19044.2130/2132&#xff08;带…

使用ansible 批量分发SSH Key

先确保你电脑有ansible&#xff0c;我是mac的用brew安装,其他可用yum安装brew search ansiblebrew install ansible我已经安装好2.7了生成下自己的key&#xff0c;一路回车ssh-keygen -t rsa编辑host&#xff0c;添加需要增加ssh key的机器vi /etc/ansible/hosts【hostgroup】我…

使用Git简单笔记

这里只是作为简单的笔记整理&#xff0c;第一次使用的推荐先看一下廖大的教程&#xff0c;内容很多很细&#xff0c;可以边看边练、看不懂的地方先记着、争取七七八八看下来。 心情不佳的分割线 廖雪峰的git教程&#xff1a; https://www.liaoxuefeng.com/wiki/001373951630592…

部署站点支持Https访问的方法

1、申请公钥和私钥&#xff0c;放到服务器 2、编辑default配置文件 改为 加上证书路径 ps:泛域名支持admin.xxx.com、demo.xxx.com等等&#xff0c;而免费的Lets Encrypt仅支持www.xxx.com和xxx.com 整理自www.laravist.com转载于:https://www.cnblogs.com/lamp01/p/6952464.ht…

Hadoop/HDFS命令

Hadoop中文手册&#xff1a;http://hadoop.apache.org/docs/r1.0.4/cn/commands_manual.html 英文手册&#xff1a;http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/CommandsManual.html Hadoop fs命令 hadoop fs: 该命令可以用于其他文件系统&#x…

内置IOC容器ServiceCollection

.NetCore内置IOC容器ServiceCollection一、IOC介绍IOC&#xff1a;全名(Inversion of Control)-控制反转IOC意味着我们将对象的创建控制权交给了外部容器&#xff0c;我们不管它是如何创建的&#xff0c;我们只需要知道&#xff0c;当我们想要某个实例时&#xff0c;我们可以直…

React+Redux仿Web追书神器

引言 由于 10 月份做的 React Native 项目没有使用到 Redux 等库&#xff0c;写了一段时间想深入学习 React&#xff0c;有个想法想做个 demo 练手下&#xff0c;那时候其实还没想好要做哪一个类型的&#xff0c;也看了些动漫的&#xff0c;小说阅读&#xff0c;聚合资源的开源…