WPF|分享一個登錄界面設計

分享一個登錄界面,先看效果圖:

ff140698eefaa4c553345921e56c0696.gif

準備

文中使用到了一些圖標:

140b90e43a895b92dccf35bb4d6479d0.png

我們可以從 iconfont[1]免費下載:

f67e7d111e09939b73038d38cccfeea2.gif

代碼簡單說明

請隨手創建一個WPF項目(.NET Framework、.NET 5\6\7皆可),使用tree /f命令看看最終的文件結構,和上面的截圖一致:

C:.
│??ModernLoginPage.xaml
│??ModernLoginPage.xaml.cs
│
└─Imagesclose.pngemail.pnggithub.pnggoogle.pnglock.pngwechat.png

簡單吧,一個圖片目錄存放前面下載的圖標,一個xaml文件做登錄界面設計,xaml.cs做界面按鈕響應事件處理(實際項目建議使用Mvvm)。

10b400ba76e6b4d4a5e328f2f8bae47a.png

看上面的截圖,重點說說這兩處:

  1. 左側的圖形控件

公司有設計師,做這種圖片是很簡單的,沒有的時候,可以使用PolygonEllipse等實現一些簡單的效果,讓界面不要那么單調:

<Canvas><Polygon?Points="0,?20?230,140?0,270"?Fill="#4EB1B6"?/><Polygon?Points="100,?400?200,370?180,470"?Fill="#4EB1B6"?/><Ellipse?Margin="250?450?0?0"?Width="40"?Height="40"?Fill="#4EB1B6"?/><Ellipse?Margin="50?400?0?0"?Width="20"?Height="20"?Fill="#4EB1B6"?/>
</Canvas>
  1. 右側的賬號文本框和密碼框

作者為了演示效果,賬號文本框使用的 一張圖片 + 一個標簽控件 + 一個文本框 控件組合實現:

<Border?Padding="10"?BorderThickness="1"?BorderBrush="#acb0af"?Margin="70?7"?CornerRadius="5"><Grid><Grid.ColumnDefinitions><ColumnDefinition?Width="auto"?/><ColumnDefinition?Width="*"?/></Grid.ColumnDefinitions><Image?Source="/TerminalMACS.TestDemo;component/Views/ModernLogin/Images/email.png"?Height="20"?/><TextBlock?x:Name="textEmail"?MouseDown="textEmail_MouseDown"?Text="郵箱"Style="{StaticResource?textHint}"?/><TextBox?x:Name="txtEmail"?TextChanged="txtEmail_TextChanged"?Style="{StaticResource?textBox}"?/></Grid>
</Border>
private?void?textEmail_MouseDown(object?sender,?MouseButtonEventArgs?e)
{txtEmail.Focus();
}private?void?txtEmail_TextChanged(object?sender,?TextChangedEventArgs?e)
{if?(!string.IsNullOrEmpty(txtEmail.Text)?&&?txtEmail.Text.Length?>?0){textEmail.Visibility?=?Visibility.Collapsed;}else{textEmail.Visibility?=?Visibility.Visible;}
}

代碼比較簡單,.cs文件代碼:

  • 鼠標點擊標簽時,將賬號文本框設置為焦點控件,提高用戶體驗

  • 文本框中輸入賬號信息時 顯示|隱藏 標簽

密碼框邏輯同賬號文本框:

<Border?Padding="10"?BorderThickness="1"?BorderBrush="#acb0af"?Margin="70?7"?CornerRadius="5"><Grid><Grid.ColumnDefinitions><ColumnDefinition?Width="auto"?/><ColumnDefinition?Width="*"?/></Grid.ColumnDefinitions><Image?Source="/TerminalMACS.TestDemo;component/Views/ModernLogin/Images/lock.png"?Height="20"?/><TextBlock?x:Name="textPassword"?MouseDown="textPassword_MouseDown"?Text="密碼"Style="{StaticResource?textHint}"?/><PasswordBox?x:Name="txtPassword"?PasswordChanged="txtPassword_TextChanged"Style="{StaticResource?textBox}"?/></Grid>
</Border>
private?void?textPassword_MouseDown(object?sender,?MouseButtonEventArgs?e)
{txtPassword.Focus();
}private?void?txtPassword_TextChanged(object?sender,?RoutedEventArgs?e)
{if?(!string.IsNullOrEmpty(txtPassword.Password)?&&?txtPassword.Password.Length?>?0){textPassword.Visibility?=?Visibility.Collapsed;}else{textPassword.Visibility?=?Visibility.Visible;}
}

參考:

  • 油管視頻:C# WPF UI | How to Design Modern Login Page in WPF[2]

  • 油管視頻作者:C# WPF UI Academy[3]

本文代碼:ModernLogin[4]

參考資料

[1]

iconfont: https://www.iconfont.cn/

[2]

C# WPF UI | How to Design Modern Login Page in WPF: https://www.youtube.com/watch?v=PoPUB1_q2kE&t=907s

[3]

C# WPF UI Academy: https://www.youtube.com/channel/UCtVawNW7C2t6AX1vex6a_vw

[4]

ModernLogin: https://github.com/dotnet9/TerminalMACS.ManagerForWPF/tree/master/src/TerminalMACS.TestDemo/Views/ModernLogin

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287634.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287634.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287634.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《零基礎看得懂的C++入門教程 》——(6)自己動手寫個函數

一、學習目標 了解C語言的自定義函數的使用方法了解C語言自定義函數的傳參了解C語言自定義函數的返回值 目錄 預備第一篇&#xff0c;使用軟件介紹在這一篇&#xff0c;C與C使用的軟件是一樣的&#xff0c;查看這篇即可&#xff1a;《軟件介紹》 想了解編譯原理和學習方法點…

k8s mysql數據同步_K8s——MySQL實現數據持久化

1、搭建nfs存儲[rootdocker-k8s01 ~]# yum -y install nfs-utils[rootdocker-k8s01 ~]# mkdir /nfsdata/mysql -p[rootdocker-k8s01 ~]# cat /etc/exports/nfsdata *(rw,sync,no_root_squash)[rootdocker-k8s01 ~]# systemctl restart nfs-server[rootdocker-k8s01 ~]# systemc…

【計算機圖形學】實驗:C#語言采用GDI+定義筆刷并填充圖形完整實驗操作流程

一、實驗目的: 熟練掌握在.net環境下對筆刷的定義,并可用定義好的筆刷填充多邊形。 二、實驗準備: 學習在.net環境下GDI+所提供的5種筆刷類型,掌握定義筆刷的方法和填充圖形的函數,如FillRectange ( )、FillEllipse ( )等。 三、實驗內容: 在.net環境中設計一個窗體…

Android之提示Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed

1 問題 02-28 22:44:33.031 7379 7379 E AndroidRuntime: java.lang.IllegalArgumentException: Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed 02-28 22:44:33.031 7379 7379 E AndroidRuntime: at android.graphics.Canvas.checkValidClipOp(C…

使用Java API的5個技巧

本文介紹了一些關于Java API安全和性能方面的簡單易用的技巧&#xff0c;其中包括保證API Key安全和開發Web Service方面中在框架方面選擇的一些建議。 程序員都喜歡使用API&#xff01;例如為app應用構建API或作為微服務架構體系的一部分。當然&#xff0c;使用API的前提是能讓…

管道模式 pipe

先放一個圖&#xff0c;預則立嘛 PipelinePattern.rar 這里是 不完整的碼轉載于:https://www.cnblogs.com/ganmk--jy/p/5525897.html

《零基礎看得懂的C++入門教程 》——(7)小數組玩起來

一、學習目標 了解數組的使用方法了解一維數組的使用方法了解一維數組與循環的使用方法 目錄 預備第一篇&#xff0c;使用軟件介紹在這一篇&#xff0c;C與C使用的軟件是一樣的&#xff0c;查看這篇即可&#xff1a;《軟件介紹》 想了解編譯原理和學習方法點這篇&#xff0c…

SSO 方案演進

1背景介紹 隨著業務與技術的發展&#xff0c;現今比以往任何時候都更需要單點登錄 SSO 身份驗證。現在幾乎每個網站都需要某種形式的身份驗證才能訪問其功能和內容。隨著網站和服務數量的增加&#xff0c;集中登錄系統已成為一種必要。在本文中&#xff0c;我們將討論下 …

【計算機圖形學】實驗:VB.net環境下的圖形裁剪完整實驗操作流程

一、實驗目的: 熟練掌握在.net環境下對圖形的裁剪。 二、實驗準備: 學習圖形裁剪的基本算法,以及在.net環境下裁剪圖形的基本方法。 三、實驗內容: 在.net環境中利用裁剪圖形的基本方法對任意圖形進行裁剪。

UI之常用通過顏色值和透明度怎么得到最后的顏色值

1 、問題 UI給了顏色#000000&#xff0c;透明度是75%&#xff0c;我需要最終的顏色值。 2 、透明度色值表 00%FF&#xff08;不透明&#xff09; 5%F2 10%E5 15%D8 20%CC 25%BF 30%B2 35%A5 40%99 45%8c 50%7F 55%72 60%66 65%59 70%4c 75%3F 80%33 85%21 90%19 95%0c 100%00…

《零基礎看得懂的C++入門教程 》——(8)搞定二維數組與循環嵌套

一、學習目標 了解二維數組的使用方法了解循環嵌套的使用方法 目錄 預備第一篇&#xff0c;使用軟件介紹在這一篇&#xff0c;C與C使用的軟件是一樣的&#xff0c;查看這篇即可&#xff1a;《軟件介紹》 想了解編譯原理和學習方法點這篇&#xff0c;學習方法和一些原理C與C都…

mybatis模糊查詢不同寫法

工作中用到&#xff0c;寫三種用法吧&#xff0c;第四種為大小寫匹配查詢 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT(%, #{text}), %); 2. 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE %${text}%; 3. 程序中拼接 Java …

常見的Ubuntu命令30條(一)

Ubuntu命令是指在Ubuntu操作系統中用于執行各種任務和操作的命令行指令。這些命令可以用于管理系統、配置網絡、安裝軟件、瀏覽文件等。Ubuntu命令通常在終端&#xff08;Terminal&#xff09;應用程序中輸入并執行。 在Ubuntu中&#xff0c;有許多常用的命令和指令。以下是一…

【計算機圖形學】實驗:C#.net環境下的圖形變換完整實驗操作流程

一、實驗目的: 熟練掌握在.net環境下對圖形的變換方法。 二、實驗準備: 學習圖形變換的基本算法,如平移、旋轉、縮放等,以及在.net環境下變換圖形的基本方法。 三、實驗內容: 在.net環境中利用變換圖形的基本方法對圖形進行變換,包括平移、旋轉、縮放、對稱、復合變…

Android之給ImageView添加點擊效果

1 問題 給ImageView添加點擊效果 2 解決辦法 1&#xff09;、新建selector.xml文件 <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item android:drawable&…

python基礎知識縱覽(下)

python函數 1.函數作用 最大化代碼重用和最小化代碼冗余流程的分解2.函數基本概念 def創建對象并賦值給某一變量## 創建一個函數對象并賦值給fn_namedef fn_name(args1,args2,...,argsN): <statements>復制代碼def是可執行的代碼## 通過if語句判斷來做定義函數,def是實…

《零基礎看得懂的C++入門教程 》——(9)結構體原來如此

一、學習目標 了解C語言的結構體的使用方法了解C語言結構體的結構的賦值了解多種C語言結構體變量的賦值方法和取值方法 目錄 預備第一篇&#xff0c;使用軟件介紹在這一篇&#xff0c;C與C使用的軟件是一樣的&#xff0c;查看這篇即可&#xff1a;《軟件介紹》 想了解編譯原…

微信小程序python token驗證_微信小程序python 用戶認證

按流程圖來先通過wx.login()獲取code,再通過我們后臺配置的接口獲取openid和session_key// 登錄wx.login({success: res > {console.log(res)// 發送 res.code 到后臺換取 openId, sessionKey, unionIdwx.request({url: api.GET_OPENID, //data: {js_code: res.code},succes…

C#實用技巧之:將圖標打包進DLL并讀取

概述個人的項目界面有時候需要用到很多圖標&#xff0c;這些圖片可以建立一個文件夾單獨存放&#xff0c;但有時涉及到多臺設備部署的話&#xff0c;每臺設備都需要隨項目一起拷貝過去&#xff0c;如果忘記了界面顯示就會出問題&#xff0c;有沒有更好的辦法解決&#xff1f;有…

強制IE瀏覽器或WebBrowser控件使用指定版本顯示網頁

最近為了抓取淘寶的成交數據,用C#的WebBrowser控件開發了一個簡單的程序. 發現WebBrowser控件默認使用的版本是IE7的兼容模式.而淘寶的寶貝詳細頁居然對IE7的支持不是很好. 成交記錄無法顯示,而我本機安裝的是IE10,那么有沒有辦法使我的WebBrowser控件的使用的IE版本高點呢? 查…