当前位置: 首页 > news >正文

【wpf】关于绑定的一点明悟

背景简介

软件功能为,读取一个文件夹下的所有子文件夹,每个文件夹对自动对应生成 一组 “按键+四个勾选”
在这里插入图片描述
按键点击触发,可以发送与其对应文件夹中的一些内容。这个绑定的过程我在之前的文章有过详细的介绍,非常的简单。
这里回顾一下,贴一段代码:

<Grid><Grid.RowDefinitions><RowDefinition Height="auto"/><RowDefinition/></Grid.RowDefinitions><DockPanel><Label DockPanel.Dock="Right"  Content="{Binding BtnName}"/><Button DockPanel.Dock="Right" Command="{Binding NextCmd}">下一个</Button><Button DockPanel.Dock="Right" Command="{Binding FliesReloadCmd}">文件重载</Button><hc:TextBox Text="{Binding saveInfo.BaseDirectoryPath}"hc:TitleElement.Title="路径:" hc:TitleElement.TitlePlacement="Left"hc:TitleElement.HorizontalAlignment="Center"hc:TitleElement.TitleWidth="50"/></DockPanel><ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible" ><ItemsControl ItemsSource="{Binding ButtonList}"><ItemsControl.ItemsPanel><ItemsPanelTemplate><UniformGrid Columns="4"/></ItemsPanelTemplate></ItemsControl.ItemsPanel><ItemsControl.ItemTemplate><DataTemplate><Grid Margin="5"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><Button Content="{Binding Name}" Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.TestCmd}"CommandParameter="{Binding Path=Content, RelativeSource={RelativeSource Mode=TemplatedParent}}"/><StackPanel Grid.Column="1" VerticalAlignment="Center"><CheckBox IsChecked="{Binding Bottom}"/><CheckBox IsChecked="{Binding Middle}"/><UniformGrid Columns="2"><CheckBox IsChecked="{Binding Head}"/><CheckBox IsChecked="{Binding Ptb}"/></UniformGrid></StackPanel></Grid></DataTemplate></ItemsControl.ItemTemplate></ItemsControl></ScrollViewer></Grid>

明悟

现在,我需要一个新的功能,因为一个个的按照顺序点按钮实在是太低效了。我增加了一个下一个 按钮。 我的目的是,通过下一个按钮来代替,“一个个的按照顺序点按钮” 这个操作!

迷雾

现在换成你,你能给出一个思路吗? 我马上就有了思路: 那,只要我在下一个
按钮对应的事件中,获取到所有对象的实例,然后再触发按键按下不久行了?

于是我立刻查看了后台代码!

public ObservableCollection<BtnItem> ButtonList { get; set; } = new ObservableCollection<BtnItem>();

由于我们使用的是绑定,使用后台的数组,其实是按键对应的数据,而不是按键本身。
要想得到按键的实例,似乎没有很直接的方式。结果我就在,如何通过数据源获取界面对象实例
这个问题上陷入沉思!

明悟

突然,一个念头突然打破了循环,既然是绑定,为啥我还需要界面的那些按键对象?是因为要那一个个触发按键吗?但是触发按键是表现,实际的目的是实现:按键触发,可以发送与其对应文件夹中的一些内容
于是,注意力就从按键的点击,到了功能的实现!现在回到最初的诉求!

增加了一个下一个 按钮。 我的目的是,通过下一个按钮来代替,“一个个的按照顺序点按钮” 这个操作!

再之前的代码里,我已经实现了最初的功能(按键触发,可以发送与其对应文件夹中的一些内容),现在只是增加了一个下一个 按钮来代替。
之前的代码:

 void Test(BtnItem btnItem)
{try{//发送功能,省略}catch (Exception ex){MessageBox.Show(ex.Message);}
}

BtnItem 就是按键绑定数组的子项。也只是个数据。Test通过接收这个数据,得知是哪个按键按下。

所以下一个按键对应的事件,直接调用Test,并传入对应的BtnItem就好了!这样就是和界面点击按键一样了!

//下一张
NextCmd = new DelegateCommand(() =>
{  //MessageBox.Show(ButtonList[btnIndex].Name);if (btnIndex < ButtonList.Count - 1){Test(ButtonList[btnIndex]);btnIndex++;}else{MessageBox.Show("完毕了!");    }
});

所以,这里是需要利用ButtonList,并记录下btnIndex。就能实现轮询按按钮的功能。

小结

轮询按按钮这个动作,让我的思维产生的偏差,让我一直想如何获取界面的按键对象!
但是,我们完成的绑定之后,就一定要注意通过数据驱动界面,或者直接用数据解决问题,不要马上去想着获取界面对象。

相关文章:

【wpf】关于绑定的一点明悟

背景简介 软件功能为&#xff0c;读取一个文件夹下的所有子文件夹&#xff0c;每个文件夹对自动对应生成 一组 “按键四个勾选” 按键点击触发&#xff0c;可以发送与其对应文件夹中的一些内容。这个绑定的过程我在之前的文章有过详细的介绍&#xff0c;非常的简单。 这里回顾…...

叠罗汉游戏

题目描述 农场的N头奶牛喜欢玩叠罗汉游戏&#xff0c;就是几头奶牛1头奶牛接着1头奶牛的站成一柱子形状。不过奶牛的力量不一样&#xff0c;用数值Ci表示第i头奶牛它的上面最多可以站多少头奶牛&#xff0c;问这些奶牛最少可以站成几个柱子形状。 输入格式 输入文件名&#…...

太阳能风吸式杀虫灯是什么

TH-FD1随着农业科技的不断进步&#xff0c;太阳能风吸式杀虫灯作为一种新兴的绿色农业技术&#xff0c;正逐渐走进人们的视野。这种集太阳能和风吸技术于一体的杀虫设备&#xff0c;不仅具有环保节能的特点&#xff0c;还能有效减少农药使用&#xff0c;提高农产品质量&#xf…...

SpringBoot启动扩展应用:干预优化+加快启动时间

一、SpringBoot启动配置原理简述 本内容直接查看分析SpringBoot启动配置原理&#xff0c;传送门&#xff1a; 二、SpringBoot启动过程干预 Spring Boot启动过程中我们可以实现以下干预工作&#xff1a; 修改Spring Boot默认的配置属性。使用ConfigurationProperties和Enable…...

探索Linux世界:初次接触和基本指令(文件操作)

文章目录 1.基本介绍和准备2.基本指令和Linux的基本操作3.几个重要基本指令3.1 ls - 列出文件和目录3.1.1文件的知识3.1.2 .和..文件 3.2pwd - 显示当前工作目录3.2.1路径知识 3.3 cd - 切换目录3.4 touch - 创建文件或更新时间戳3.5mkdir - 创建新目录3.6rm - 删除文件或目录3…...

递归函数(c++题解)

题目描述 对于一个递归函数w(a, b, c)。 如果a < 0 or b < 0 or c < 0就返回值1。 如果a > 20 or b > 20 or c > 20就返回W(20,20,20)。 如果a < b并且b < c 就返回w(a, b, c − 1) w(a, b − 1, c − 1) − w(a, b − 1, c)&#xff0c; 其它别…...

Qt将Unicode转换成UTF8中文

解析字符串&#xff0c;并将里面的Unicode转换成中文 QString unicodeToUtf8(QString unicode) {QString result;for (int i 0; i < unicode.length(); i){QString flag unicode.mid(i,2); if (flag "\\u"){QString s1 unicode.mid(i 2, 4);result.append(s…...

HTTP 的 multipart 类型

上一篇文章讲到 http 的 MIME 类型 http MIME 类型 里有一个 multipart 多部分对象集合类型&#xff0c;这个类型 http 指南里有讲到&#xff1a;MIME 中的 multipart&#xff08;多部分&#xff09;电子邮件报文中包含多个报文&#xff0c;它们合在一起作为单一的复杂报文发送…...

【NR 定位】3GPP NR Positioning 5G定位标准解读(二)

目录 前言 2. UE定位方法的作用 3. 标准UE定位方法 3.1 引言 3.2 网络辅助的GNSS方法 3.3 OTDOA定位 3.4 增强小区ID方法 3.5 气压传感器定位 3.6 WLAN定位 3.7 蓝牙定位 3.8 TBS定位 3.9 运动传感器定位 3.10 NR增强小区ID方法 3.11 多RTT定位 3.12 DL-AoD定位…...

为何代理IP的稳定性不如有线IP?

代理IP与网线IP的稳定性之间存在差异的原因在于它们的工作机制和服务环境的不同。以下是代理IP不如网线IP稳定的一些主要原因&#xff1a; 1. 服务提供商的质量&#xff1a; - 动态分配&#xff1a;代理IP通常是动态分配的&#xff0c;这意味着每次请求或每隔一段时间&#xff…...

【c++】 string类的模拟实现

1.浅拷贝 浅拷贝&#xff1a;也称位拷贝&#xff0c;编译器只是将对象中的值拷贝过来。如果对象中管理资源&#xff0c;最后就会导致多个对象共享同一份资源&#xff0c;当一个对象销毁时就会将该资源释放掉&#xff0c;而此时另一些对象不知道该资源已经被释放&#xff0c;以…...

transformer--transformer模型构建和测试

前面几节进行了各种组件的学习和编码&#xff0c;本节将组件组成transformer&#xff0c;并对其进行测试 EncoderDecoder 编码器解码器构建 使用EnconderDecoder实现编码器-解码器结构 # 使用EncoderDeconder类实现编码器和解码器class EncoderDecoder(nn.Module):def __ini…...

从0到1全流程使用 segment-anything

从0到1全流程使用 segment-anything 一、安装 anaconda 一、下载 anaconda 二、以管理员身份运行安装 1、勾选 Just Me 2、统一安装路径(后续 python 等包也安装至此目录) 3、勾选 add to path 然后安装即可。 三、修改 Anaconda 默认路径及默认缓存路径 Anaconda 默认下…...

Window系统部署Splunk Enterprise并结合内网穿透实现远程访问本地服务

文章目录 前言1. 搭建Splunk Enterprise2. windows 安装 cpolar3. 创建Splunk Enterprise公网访问地址4. 远程访问Splunk Enterprise服务5. 固定远程地址 前言 本文主要介绍如何简单几步&#xff0c;结合cpolar内网穿透工具实现随时随地在任意浏览器&#xff0c;远程访问在本地…...

Windows服务器:通过nginx反向代理配置HTTPS、安装SSL证书

先看下效果&#xff1a; 原来的是 http&#xff0c;配置好后 https 也能用了&#xff0c;并且显示为安全链接。 首先需要 SSL证书 。 SSL 证书是跟域名绑定的&#xff0c;还有有效期。 windows 下双击可以查看相关信息。 下载的证书是分 Apache、IIS、Tomcat 和 Nginx 的。 我…...

LeetCode67 二进制求和

题目 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 示例 示例 1&#xff1a;输入:a "11", b "1" 输出&#xff1a;"100" 示例 2&#xff1a;输入&#xff1a;a "1010", b "1011" 输出&…...

python | 列表,元组,字符串,集合,字典

列表&#xff1a; 可以容纳任意数目不同类型的元素&#xff08;支持我们学过的任意数据类型&#xff09;元素之间有先后顺序用中括号包裹&#xff0c;每个元素用逗号隔开 例如&#xff1a; students [林黛玉,薛宝钗,贾元春,贾探春,史湘云,妙玉,贾迎春,贾惜春,王熙凤,贾巧姐…...

稀疏图带负边的全源最短路Johnson算法

BellmanFord算法 Johnson算法解决的问题 带负权的稀疏图的全源最短路 算法流程 重新设置的每条边的权重都大于或等于0&#xff0c;跑完Djikstra后得到的全源最短路&#xff0c;记得要还原&#xff0c;即&#xff1a;f(u,v) d(u,v) - h[u] h[v] 例题...

oracle基础体系

一、 Oracle数据库服务器 数据库在各个行业都会有使用到&#xff1b;其实&#xff0c;我们平时无论是在与客户沟通或者交流中&#xff0c;所说的Oracle数据库是指Oracle数据库服务器&#xff08;Oracle Server&#xff09;&#xff0c;它由Oracle实例&#xff08;Oracle Instan…...

k8s运维问题整理

1.宕机或异常重启导致etcd启动失败 服务器非正常关机&#xff08;意外掉电、强制拔电&#xff09;后 etcd 数据损坏。 查看apiserver日志发现出现报错Error while dialing dial tcp 127.0.0.1:2379: connect: connection refused&#xff0c;2379是etcd的端口&#xff0c;那么a…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

【若依】框架项目部署笔记

参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作&#xff1a; 压缩包下载&#xff1a;http://download.redis.io/releases 1. 上传压缩包&#xff0c;并进入压缩包所在目录&#xff0c;解压到目标…...

ubuntu中安装conda的后遗症

缘由: 在编译rk3588的sdk时&#xff0c;遇到编译buildroot失败&#xff0c;提示如下&#xff1a; 提示缺失expect&#xff0c;但是实测相关工具是在的&#xff0c;如下显示&#xff1a; 然后查找借助各个ai工具&#xff0c;重新安装相关的工具&#xff0c;依然无解。 解决&am…...

用 FFmpeg 实现 RTMP 推流直播

RTMP&#xff08;Real-Time Messaging Protocol&#xff09; 是直播行业中常用的传输协议。 一般来说&#xff0c;直播服务商会给你&#xff1a; ✅ 一个 RTMP 推流地址&#xff08;你推视频上去&#xff09; ✅ 一个 HLS 或 FLV 拉流地址&#xff08;观众观看用&#xff09;…...

性能优化中,多面体模型基本原理

1&#xff09;多面体编译技术是一种基于多面体模型的程序分析和优化技术&#xff0c;它将程序 中的语句实例、访问关系、依赖关系和调度等信息映射到多维空间中的几何对 象&#xff0c;通过对这些几何对象进行几何操作和线性代数计算来进行程序的分析和优 化。 其中&#xff0…...

Python爬虫(四):PyQuery 框架

PyQuery 框架详解与对比 BeautifulSoup 第一部分&#xff1a;PyQuery 框架介绍 1. PyQuery 是什么&#xff1f; PyQuery 是一个 Python 的 HTML/XML 解析库&#xff0c;它采用了 jQuery 的语法风格&#xff0c;让开发者能够用类似前端 jQuery 的方式处理文档解析。它的核心特…...

简单聊下阿里云DNS劫持事件

阿里云域名被DNS劫持事件 事件总结 根据ICANN规则&#xff0c;域名注册商&#xff08;Verisign&#xff09;认定aliyuncs.com域名下的部分网站被用于非法活动&#xff08;如传播恶意软件&#xff09;&#xff1b;顶级域名DNS服务器将aliyuncs.com域名的DNS记录统一解析到shado…...