WPF效果第二百零四篇之自定义更新控件

好久没有更新文章,今天抽空来分享一下最近玩耍的自定义控件;里面包含了自定义控件、依赖属性和路由事件;来看看最终实现的效果:a5812d83ee659fc3399f4dcecffa3eba.gif1、先来看看前台Xaml布局和绑定:

<Style TargetType="{x:Type Cores:UploadWithProgressControl}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Cores:UploadWithProgressControl}"><WrapPanel><Grid><TextBox Background="#323232"Style="{StaticResource TriggerTextBox}"IsReadOnly="True" Text="{TemplateBinding FilePath,Converter={StaticResource FilePathToFileNameConverter}}"VerticalContentAlignment="Center"/><Button x:Name="SelectFileButton" Style="{StaticResource OpenFileButton}"HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,15,5,15"/></Grid><Button Content="更新" x:Name="UpdateButton" Margin="10,10,0,10"Style="{StaticResource BaseButton}"IsEnabled="{TemplateBinding CurrentState,Converter={StaticResource UpdateStateEnumToButtonIsEnabledConverter}}"/></WrapPanel></ControlTemplate></Setter.Value></Setter>
</Style>

2、后台代码,关键点在TemplatePart和GetTemplateChild:

8de06af269cc151b2e05f5a26bcff73e.png3、对于文件的选择无非就是控件内部依赖属性的处理:

private void SelectFileButton_Click(object sender, RoutedEventArgs e){System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog{Title = "选择要升级的文件",Filter = "升级程序(*.bin)|*.bin|所有文件(*.*)|*.*"};System.Windows.Forms.DialogResult isSelected = openFileDialog.ShowDialog();if(isSelected == System.Windows.Forms.DialogResult.OK){//选择的文件string fileName = openFileDialog.FileName;FilePath = fileName;CurrentState = UpdateStateEnum.SelectFile;OperateType = OperateTypeEnum.SelectFile;}}

4、对于更新按钮就需要自定义路由事件了,毕竟是处理控件以外的逻辑了:

decfb1f20d1127a25b44d4a08054c83b.png5、可以用Code Snippet快速创建路由事件:

https://andrewharcourt.com/articles/code-snippet-for-wpf-routed-event

6、最后来个调用完事:

<Cores:UploadWithProgressControl VerticalAlignment="Center" HorizontalAlignment="Center"IsUploading="{Binding FirstData.IsUpload,Mode=TwoWay}"ProgressValue="{Binding FirstData.ProgressValue,Mode=TwoWay}"CurrentState="{Binding FirstData.UpdateState,Mode=TwoWay}"Update="UploadWithProgressControl_Click"/>

最终简单的效果先这样吧1cad4e35d82296b64126ff8f9e0be6f7.png;以后有时间的话,可以再去摸索一下更复杂的效果87f0655266c62fff289417e801890a78.png;编程不息、Bug不止、无Bug、无生活db387707900712c17324ccaefcd2e9f9.png;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下!

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

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

相关文章

u3d 逐个点运动,路径运动。 U3d one by one, path motion.

u3d 逐个点运动&#xff0c;路径运动。 U3d one by one, path motion. 作者&#xff1a;韩梦飞沙 Author&#xff1a;han_meng_fei_sha 邮箱&#xff1a;313134555qq.com E-mail: 313134555 qq.com 逐个点运动&#xff0c;路径运动。 Im going to do some motion and path. 如果…

小米净水器底部漏水_漏水传感器:您可能没有的最容易被忽视的智能家居设备...

小米净水器底部漏水While most smarthome products are aimed at convenience, there’s one smarthome device that’s actually quite useful, possibly saving you headaches and ton of money: the trusty water leak sensor. 虽然大多数智能家居产品都旨在提供便利&#x…

Unity3D笔记十 游戏元素

一、地形 1.1 树元素 1.2 草元素 二、光源 2.1 点光源 点光源&#xff08;Point Light&#xff09;&#xff1a;好像包围在一个类似球形的物体中&#xff0c;读者可将球形理解为点光源的照射范围&#xff0c;就像家里的灯泡可以照亮整个屋子一样。创建点光源的方式为在Hierarch…

facebook 文本分类_如何禁用和自定义Facebook的通知,文本和电子邮件

facebook 文本分类Facebook is really keen on keeping you on their platform. One of the ways they do that is by sending you notifications whenever the tiniest thing happens. And you won’t just see them on the site—Facebook will also notify you by email, wi…

django06: ORM示例2--uer 与file

存放路径&#xff1a;https://git.lug.ustc.edu.cn/ 笔记 外键与多键 path models.ForeignKey(to"Path")file models.ManyToManyField(to"File") code 处理方式 new_path request.POST.get("new_path",None)models.File.objects.create(…

四种简单的排序算法

四种简单的排序算法 我觉得如果想成为一名优秀的开发者&#xff0c;不仅要积极学习时下流行的新技术&#xff0c;比如WCF、Asp.Net MVC、AJAX等&#xff0c;熟练应用一些已经比较成熟的技术&#xff0c;比如Asp.Net、WinForm。还应该有着牢固的计算机基础知识&#xff0c;比如数…

Xampp修改默认端口号

为什么80%的码农都做不了架构师&#xff1f;>>> Xampp默认的端口使用如下&#xff1a; Httpd使用80端口 Httpd_ssl使用443端口 Mysql使用3306端口 ftp使用21端口 但是&#xff0c;在如上端口被占用的情况下&#xff0c;我们可以通过修改xampp默认端口的方法&…

为什么csrss进程有三个_什么是客户端服务器运行时进程(csrss.exe),为什么在我的PC上运行它?...

为什么csrss进程有三个If you have a Windows PC, open your Task Manager and you’ll definitely see one or more Client Server Runtime Process (csrss.exe) processes running on your PC. This process is an essential part of Windows. 如果您使用的是Windows PC&…

使用c#的 async/await编写 长时间运行的基于代码的工作流的 持久任务框架

持久任务框架 &#xff08;DTF&#xff09; 是基于async/await 工作流执行框架。工作流的解决方案很多&#xff0c;包括Windows Workflow Foundation&#xff0c;BizTalk&#xff0c;Logic Apps, Workflow-Core 和 Elsa-Core。最近我在Dapr 的仓库里跟踪工作流构建块的进展时&a…

多目标跟踪(MOT)论文随笔-SIMPLE ONLINE AND REALTIME TRACKING (SORT)

转载请标明链接&#xff1a;http://www.cnblogs.com/yanwei-li/p/8643336.html 网上已有很多关于MOT的文章&#xff0c;此系列仅为个人阅读随笔&#xff0c;便于初学者的共同成长。若希望详细了解&#xff0c;建议阅读原文。 本文是使用 tracking by detection 方法进行多目标…

明日大盘走势分析

如上周所述&#xff0c;大盘在4与9号双线压力下&#xff0c;上攻乏力。今天小幅下跌0.11%&#xff0c;涨511&#xff0c;平76&#xff0c;跌362&#xff0c;说明个股还是比较活跃&#xff0c;而且大盘上涨趋势未加改变&#xff0c;只是目前攻坚&#xff0c;有点缺乏外部的助力。…

android EventBus 3.0 混淆配置

2019独角兽企业重金招聘Python工程师标准>>> https://github.com/greenrobot/EventBus 使用的这个库在github的官网README中没有写明相应混淆的配置. 经过对官网的查询&#xff0c;在一个小角落还是被我找到了。 -keepattributes *Annotation* -keepclassmembers …

dotnet-exec 0.11.0 released

dotnet-exec 0.11.0 releasedIntrodotnet-exec 是一个 C# 程序的小工具&#xff0c;可以用来运行一些简单的 C# 程序而无需创建项目文件&#xff0c;让 C# 像 python/nodejs 一样简单&#xff0c;而且可以自定义项目的入口方法&#xff0c;支持但不限于 Main 方法。Install/Upd…

运行时获取类库信息

运行时获取类库信息Intro在我们向别的开源项目提 issue 的时候&#xff0c;可能经常会遇到别人会让我们提供使用的版本信息&#xff0c;如果别的开源项目类库集成了 source link&#xff0c;我们可以从程序集信息中获取到版本以及对应的 commit 信息&#xff0c;这样我们就可以…

xbox360链接pc_如何将实时电视从Xbox One流式传输到Windows PC,iPhone或Android Phone

xbox360链接pcSet up your Xbox One’s TV integration and you can do more than just watch TV on your Xbox: you can also stream that live TV from your Xbox to a Windows 10 PC, Windows phone, iPhone, iPad, or Android device over your home network. 设置Xbox One…

WPF ABP框架更新日志(最新2022-11月份)

更新说明本次更新内容包含了WPF客户端以及Xamarin.Forms移动端项目, 更新内容总结如下:WPF 客户端修复启动屏幕无法跳转异常修复添加好友异常修复托盘图标状态更新异常优化好友发送消息时状态检测更新聊天窗口UI风格更新好友列表得头像显示更新聊天窗口消息日期分组显示更新系统…

JSONObject和JSONArray 以及Mybatis传入Map类型参数

import org.json.JSONArray;import org.json.JSONObject;将字符串转化为JSONArray JSONArray jsonArray new JSONArray(deviceInfo); //注意字符串的格式将JSONArray转化为JSONObject类型 JSONObject jsonObject jsonArray.getJSONObject(0);将值存入Map Map<String,S…

十月cms_微软十月更新失败使整个PC行业陷入困境

十月cmsMicrosoft still hasn’t re-released Windows 10’s October 2018 Update. Now, PC manufacturers are shipping PCs with unsupported software, and Battlefield V is coming out next week with real-time ray-tracing technology that won’t work on NVIDIA’s RT…

让Visual Studio 2013为你自动生成XML反序列化的类

Visual Sutdio 2013增加了许多新功能&#xff0c;其中很多都直接提高了对代码编辑的便利性。如&#xff1a; 1. 在代码编辑界面的右侧滚动条上显示不同颜色的标签&#xff0c;让开发人员可以对所编辑文档的修改、查找、定位情况一目了然。而不用像往常一样上下不停地拖动滚动条…

20年的 .NET ,更需要 00 后的你

.NET 20 周年&#xff0c; 在国内有一大批和 .NET 一起成长的开发者&#xff0c;有一大批在不同行业采用 .NET 作为解决方案的企业。或者你会经常听到很多的大神说他的 .NET 经历&#xff0c;也会听到 .NET “牛逼” 的故事&#xff0c;更会听到用 .NET 不用“996”的神话。但对…