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.pswp.cn/news/280858.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280858.shtml
英文地址,請注明出處:http://en.pswp.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…

BZOJ3511: 土地劃分

【傳送門&#xff1a;BZOJ3511】 簡要題意&#xff1a; 給出n個點&#xff0c;m條邊&#xff0c;每個點有A和B兩種形態&#xff0c;一開始1為A&#xff0c;n為B 給出VA[i]和VB[i]&#xff0c;表示第i個點選擇A和B形態的價值 每條邊給出x,y,EA,EB,EC&#xff0c;表示如果x和y都為…

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(…

Error opening terminal: xterm-256color

在使用gdb調試linux內核時&#xff0c;提示如下錯誤&#xff1a; arm-none-linux-gnueabi-gdb --tui vmlinux Error opening terminal: xterm-256color. 解決辦法&#xff1a; 1、 edit your .bash_profile file vim .bash_profile 2、commnet #export TERMxterm-256colo…

四種簡單的排序算法

四種簡單的排序算法 我覺得如果想成為一名優秀的開發者&#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…

bat批處理筆記

變量 1.CMD窗口變量&#xff0c;變量名必須用單%引用&#xff08;即&#xff1a;%variable&#xff09; 外部變量&#xff0c;是系統制定的&#xff0c;只有9個&#xff0c;專門保存外部參數的&#xff0c;就是運行批處理時加的參數。只有 %1 %2 %3 %4 ...... %9。 在bat內直…

多目標跟蹤(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…

C# 讀取文件內容/輸出txt log

逐行讀 jsonString string.Empty;if (File.Exists(jsonFile)){StreamReader sr new StreamReader(jsonFile, Encoding.UTF8);string line string.Empty;while ((line sr.ReadLine()) ! null){jsonString line;}sr.Close();} 全讀取 string text File.ReadAllText("…

樹形dp-CF-337D. Book of Evil

題目鏈接&#xff1a; http://codeforces.com/problemset/problem/337/D 題目大意&#xff1a; 給一棵樹&#xff0c;m個點&#xff0c;一個距離d&#xff0c;求有多少個點A,使得A到所有的m個點距離都不超過d. 解題思路&#xff1a; 樹形dp. 有兩種方法可以解&#xff1a; 1、類…

運行時獲取類庫信息

運行時獲取類庫信息Intro在我們向別的開源項目提 issue 的時候&#xff0c;可能經常會遇到別人會讓我們提供使用的版本信息&#xff0c;如果別的開源項目類庫集成了 source link&#xff0c;我們可以從程序集信息中獲取到版本以及對應的 commit 信息&#xff0c;這樣我們就可以…

Oracle數據表中輸入引號等特殊字符

Oracle輸入特殊字符的特殊方法: UPDATE BOOKMARK SET BM_VALUEq/ --在這里寫下需要輸入的內容&#xff08;可以包括引號、回車等特殊的符號&#xff09;,所見即所得 / -- WHERE BM_NAMEXX