WPF|一個比較簡單帶點設計的登錄界面

閱讀目錄

  1. 效果展示

  2. 準備

  3. 簡單說明 + 源碼

  4. 結尾(視頻及源碼倉庫)

1. 效果展示

欣賞效果:

2b783fc7285df182bc76decce8c2dcff.gif

2. 準備

創建一個WPF工程,比如站長使用 .NET 7[1] 創建名為 Login5 的WPF項目。

71203248f0e9d98ace0b73e4e5e071c5.png

找一張圖片做為裝飾,放登錄表單左側:

40c5613d59b1857e113a721f22367e16.png

添加Nuget包 MaterialDesignThemes[2]

<PackageReference?Include="MaterialDesignThemes"?Version="4.6.0-ci176"?/>

3. 簡單說明 + 源碼

界面比較簡單,代碼也不多,我們直接貼代碼。

MainWindow.xaml

界面的整體布局和樣式都在這個文件內:

<Windowx:Class="Login5.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="MainWindow"Width="800"Height="450"ResizeMode="NoResize"WindowStartupLocation="CenterScreen"WindowStyle="None"mc:Ignorable="d"><Window.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary?Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml"?/><ResourceDictionary?Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml"?/><ResourceDictionary?Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.Red.xaml"?/><ResourceDictionary?Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml"?/></ResourceDictionary.MergedDictionaries></ResourceDictionary></Window.Resources><Grid?MouseDown="Border_MouseDown"><Grid.Background><LinearGradientBrush?StartPoint="0.1,0"?EndPoint="0.9,1"><GradientStop?Offset="1"?Color="#FFE63070"?/><GradientStop?Offset="0"?Color="#FFFE8704"?/></LinearGradientBrush></Grid.Background><BorderHeight="390"VerticalAlignment="Top"Background="#100E17"CornerRadius="0?0?180?0"?/><StackPanel?Orientation="Horizontal"><StackPanel?Width="350"><ImageWidth="300"Height="300"Margin="30"VerticalAlignment="Top"Source="pack://application:,,,/Login5;component/Images/ICON4801.png"Stretch="Fill"?/></StackPanel><StackPanel?Width="350"><StackPanel?Margin="20,40"><TextBlockMargin="20"FontFamily="Great?Vibes"FontSize="38"Foreground="White"Text="用戶登錄"TextAlignment="Center"?/><StackPanel?Margin="10"?Orientation="Horizontal"><materialDesign:PackIconWidth="25"Height="25"Foreground="White"Kind="User"?/><TextBoxx:Name="txtUsername"Width="250"Margin="10,0"materialDesign:HintAssist.Hint="輸入?用戶名?/?郵箱"BorderBrush="White"CaretBrush="#FFD94448"Foreground="White"SelectionBrush="#FFD94448"?/></StackPanel><StackPanel?Margin="10"?Orientation="Horizontal"><materialDesign:PackIconWidth="25"Height="25"Foreground="White"Kind="Lock"?/><PasswordBoxx:Name="txtPassword"Width="250"Margin="10,0"materialDesign:HintAssist.Hint="********"BorderBrush="White"CaretBrush="#FFD94448"Foreground="White"SelectionBrush="#FFD94448"?/></StackPanel><StackPanel?Margin="10"?HorizontalAlignment="Center"><Buttonx:Name="btnLogin"Width="100"Height="40"materialDesign:ButtonAssist.CornerRadius="10"Background="#D94448"BorderBrush="#D94448"BorderThickness="2"Content="登錄"Foreground="White"Style="{StaticResource?MaterialDesignRaisedButton}"ToolTip="登錄"?/></StackPanel></StackPanel></StackPanel><StackPanel?Width="100"><Buttonx:Name="btnExit"Margin="10,20"Background="{x:Null}"Click="btnExit_Click"Style="{StaticResource?MaterialDesignFloatingActionButton}"ToolTip="Close"><materialDesign:PackIconWidth="30"Height="30"Foreground="White"Kind="Close"?/></Button></StackPanel></StackPanel></Grid>
</Window>

MainWindow.xaml.cs

窗體拖動和關閉按鈕事件:

using?System.Windows;
using?System.Windows.Input;namespace?Login5;public?partial?class?MainWindow?:?Window
{public?MainWindow(){InitializeComponent();}private?void?Border_MouseDown(object?sender,?MouseButtonEventArgs?e){this.DragMove();}private?void?btnExit_Click(object?sender,?RoutedEventArgs?e){this.Close();}
}

4. 結尾(視頻及源碼倉庫)

有興趣可以看看原作者視頻(推薦),下方給出視頻及源碼倉庫鏈接:

參考:

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

  • 油管視頻:Multiple User Login Form | C# WPF[4]

  • 參考代碼:Multi-login-CSharp-WPF[5]

  • 本文代碼:Login5[6]

參考資料

[1]

.NET 7: https://dotnet.microsoft.com/zh-cn/

[2]

MaterialDesignThemes: https://dotnet9.com/2020/12/Material-designinxaml-an-open-source-csharp-WPF-Control-Library

[3]

C# Code Academy: https://www.youtube.com/channel/UCMTD4dfLZb8nhMOsVwGvHJw

[4]

Multiple User Login Form | C# WPF: https://www.youtube.com/watch?v=t4Kg62UeSws

[5]

Multi-login-CSharp-WPF: https://github.com/alihaider11/Multi-login-CSharp-WPF

[6]

Login5: https://github.com/dotnet9/TerminalMACS.ManagerForWPF/tree/master/src/WPFDesignDemos/Login5

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

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

相關文章

Android插件基礎之類加載器學習

記錄學習java 加載器學習所獲心得&#xff0c;逐步記錄了解java加載器的過程。為了知悉android 插件化的實現原理&#xff0c;從而需要從頭了解android加載apk&#xff0c;以及基礎的java類加載的加載過程情況&#xff0c;為方便記錄和記憶&#xff0c;故此將學習了解的過程記錄…

php多個文件上傳代碼,PHP單文件上傳類或多文件上傳類源碼

以下為引用的內容&#xff1a;php文件:代碼://如果收到表單傳來的參數&#xff0c;則進行上傳處理&#xff0c;否則顯示表單if(isset($_FILES[uploadinput])){//建目錄函數&#xff0c;其中參數$directoryName最后沒有"/"&#xff0c;//要是有的話&#xff0c;以/打散…

《看聊天記錄都學不會C語言?太菜了吧》(13)(9*9 乘法表)尋找電腦中的盲盒彩蛋

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋…

Fragment使用--文章集錦

android使用Fragment實現底部菜單使用show()和hide()來切換以保持Fragment狀態Android Fragment 真正的完全解析&#xff08;上&#xff09;Android Fragment實踐(一)糾正對Fragment Transaction BackStack的誤解多個Fragment 切換時不重新實例化Fragment詳解之四——管理Fragm…

Android之在在EditText的xml里面配置了相關屬性依然沒有顯示光標問題

1 問題 在EditText的xml里面配置了 android:cursorVisible"true" android:focusable"true" android:focusableInTouchMode"true" 依然沒有光標顯示 2 解決辦法 直接在代碼層控制&#xff0c;平且拉起鍵盤 fun showSoftInputFromWindow(activ…

【經典回放】多種語言系列數據結構線性表之二:鏈表

目錄 1 鏈表結構設計 2 簡單的鏈表測試 2 鏈表的組織和ADT設計 3 初始化有頭結點鏈表 4 有頭結點鏈表中追加一個結點(一行數據)

使用 Postman 實現 API 自動化測試

1背景介紹 相信大部分開發人員和測試人員對 postman 都十分熟悉&#xff0c;對于開發人員和測試人員而言&#xff0c;使用 postman 來編寫和保存測試用例會是一種比較方便和熟悉的方式。但 postman 本身是一個圖形化軟件&#xff0c;相對較難或較麻煩&#xff08;如使用 …

php json -gt;訪問,【轉】Php+ajax+jsonp解決ajax跨域問題

首先&#xff1a;jsonp是json用來跨域的一個東西。原理是通過script標簽的跨域特性來繞過同源策略。發送端&#xff1a;$.ajax({type : "post",url : "ajax.php",dataType : "jsonp",jsonp: "callback",//傳遞給請求處理程序或頁面的&…

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(1)加載Python神器!亮劍!

本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新&#xff0c;包括別的語言以及實戰都將使用對話的方式進行教學&#xff0c;基礎編程語言教學適用于零基礎小白&#xff0c;之后實戰課程也將會逐步更新。 若…

little tricks(持續更新)【python】

python中的list有reverse方法&#xff0c;但是字符串卻沒有&#xff0c;怎么辦呢&#xff1f; csdn博主有列了幾個方法&#xff0c;我覺得第一個最簡單直接&#xff0c;str[::-1]搞定。 當然也有一種怪異的方法&#xff0c;我把字符串轉為序列reverse一下&#xff0c;再轉回來不…

Codeigniter 3 拓展HMVC

2019獨角獸企業重金招聘Python工程師標準>>> 在Codeiniter&#xff08;以下統稱CI&#xff09; 2.X版本中&#xff0c;我們就通過拓展核心類庫實現了HMVC&#xff0c;但是同樣的代碼&#xff0c;拿到CI 3中&#xff0c;就很有可能不好用了。 ###拓展核心類庫方式 官…

FPGA FIFO深度計算

轉自&#xff1a;http://comm.chinaaet.com/adi/blogdetail/37555.html 首先&#xff0c;一定要理解清楚FIFO的應用場景&#xff0c;這個會直接關系到FIFO深度的計算&#xff0c;如果是面試官拋出的問題&#xff0c;那么有不清楚的地方&#xff0c;就應該進行詢問。如果是筆試或…

玩轉ASP.NET Core 6.0框架-序言

ASP.NET Core是微軟提供的強大的web框架&#xff0c;它有很多潛在的強大而有用的功能。本專欄的目標是幫助您把框架的隱藏能力最大限度地發揮出來&#xff0c;讓您能夠按需定制ASP NET Core框架。本專欄提供了一種具體的操作和實現方法&#xff0c;可以讓你在短時間盡可能地提高…

從C#開始的面向對象編程經典自學教程

1、C語言的時代 在C語言時代,可以認為那時的編程過程就是表格加工過程,也就是從A表格到B表格、再到C表格…..等等,這個過程中,計算機語言如何描述一個表格,成為計算機語言的關鍵。 對一個表格的分析可以發現:表格是兩部分組成:表頭和表格: 學生表 STUDENT 在這個表格…

Java之對List里面的對象名字進行模糊查詢

1 問題 對list里面的對象名字進行模糊查詢 2 解決辦法 //即可以進行模糊匹配matcher.find()//匹配查詢matcher.matches() /*** 模糊查詢*/public static ArrayList<SearchBean> search(String name, List<SearchBean> list) {ArrayList<SearchBean> results…

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(2)在python中加號竟然如此善變

本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新&#xff0c;包括別的語言以及實戰都將使用對話的方式進行教學&#xff0c;基礎編程語言教學適用于零基礎小白&#xff0c;之后實戰課程也將會逐步更新。 若…

mysql數據庫rp集群,使用MySQL-Cluster搭建MySQL數據庫集群

1、MySQL集群的作用&#xff1a;- 解決訪問節點的單點故障- 數據存儲節點的單點故障- 解決數據存儲節點數據備份問題2、集群&#xff1a;使用一組服務器提供相同的服務3、關于MySQL-Cluster&#xff1a;MySQL官方提供的集群版本已集成標準版MySQL程序&#xff0c;可獨立安裝使用…

桌面虛擬化云技術將支撐數字化醫院

桌面虛擬化云技術將支撐數字化醫院 2013-12-04 10:32 現今醫療行業已經從醫院——患者的二元關系走向從醫院——患者——政府監督——醫療保險的多元關系&#xff0c;醫療體系需要更高效的運轉&#xff0c;患者需要更好的就醫體驗&#xff0c;這使得醫療行業信息化建設的重要性…

Blazor University (23)路由 —— 路由參數

原文鏈接&#xff1a;https://blazor-university.com/routing/route-parameters/路由參數源代碼[1]到目前為止&#xff0c;我們已經了解了如何將靜態 URL 鏈接到 Blazor 組件。靜態 URL 只對靜態內容有用&#xff0c;如果我們希望同一個組件根據 URL 中的信息&#xff08;例如客…

【經典回放】多種語言系列數據結構算法:棧(C版)

本文采用C語言實現棧結構算法并舉例應用。 一 棧的基本原理分析 作為棧這種數據結構,數據是進行所謂的先進后出操作,但棧在操作中,并不需要在中間插入刪除操作、一般也不需要在進棧數據中查找什么,這種情況下,恰恰是順序表可以完成的非常好的場合,所以棧經常是用一個簡單…