点击上方“Dotnet9”添加关注哦

Demo演示:

演示动画

你的时间宝贵,不想看啰嗦的文字,可直接拉到文末下载源码!

1. 新建项目

站长开发环境:

  • VS 2019企业版 16.70

  • .NET 5 Preview 5

.NET 5 WPF 项目模板和 .NET Core 3.1 WPF 项目模板没有区别,创建好项目后,NuGet 引入 MaterialDesignThemes 库:

安装MaterialDesignThemes库

2.引入样式

演示Demo就一个xaml文件和xaml.cs文件,为了方便后面收集WPF界面设计效果,统一放在了开源项目TerminalMACS.ManagerForWPF[1]中,所以控件样式引用直接在FoodAppLoginView.xaml中添加:

<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.Amber.xaml" /><ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" /></ResourceDictionary.MergedDictionaries></ResourceDictionary>
</Window.Resources>

3.控件动画效果

见上面GIF动画,登录窗口加载时,用户名输入框、密码输入框、记住密码、右侧背景图片等元素有动画效果,每个部分代码结构类似,比如下面的用户名输入框代码:

<!--#region User name textblox-->
<materialDesign:TransitioningContent Grid.Row="2" Margin="90,20,00,0" HorizontalAlignment="Left"><materialDesign:TransitioningContent.OpeningEffects><materialDesign:TransitionEffect Kind="SlideInFromLeft" Duration="0:0:2"/></materialDesign:TransitioningContent.OpeningEffects><StackPanel Style="{StaticResource setVisibilityBasedLogin}" Orientation="Horizontal"><materialDesign:PackIcon Kind="Account" Width="16" Height="16" VerticalAlignment="Center"Margin="0,5,10,0" Foreground="{Binding ElementName=NameTextBox, Path=BorderBrush}"/><TextBox x:Name="NameTextBox" Width="140" materialDesign:HintAssist.Hint="{markup:I18n {x:Static i18NResources:Language.FoodAppLoginView_UserName}}"Style="{StaticResource MaterialDesignFloatingHintTextBox}"/></StackPanel>
</materialDesign:TransitioningContent>
<!--#endregion-->

使用了开源控件MD的TransitioningContent组件,其中TransitionEffect的Kind属性设置控件动画方向。

4. 模拟登录

登录按钮布局代码:

<!--#region control panel-->
<materialDesign:TransitioningContent Grid.Row="4" Margin="40,20,0,0"><materialDesign:TransitioningContent.OpeningEffects><materialDesign:TransitionEffect Kind="SlideInFromBottom" Duration="0:0:2"/></materialDesign:TransitioningContent.OpeningEffects><StackPanel Style="{StaticResource setVisibilityBasedLogin}" Orientation="Horizontal" HorizontalAlignment="Center"><CheckBox Content="{markup:I18n {x:Static i18NResources:Language.FoodAppLoginView_RememberMe}}"/><Button Style="{StaticResource MaterialDesignRaisedButton}"Command="{x:Static materialDesign:DialogHost.OpenDialogCommand}"materialDesign:ButtonAssist.CornerRadius="20"Width="80" Height="40" Margin="120,0,0,0"Content="{markup:I18n {x:Static i18NResources:Language.FoodAppLoginView_Login}}"/></StackPanel>
</materialDesign:TransitioningContent>
<!--#endregion-->

点击登录时,打开等待对话框(点击时绑定了materialDesign:DialogHost.OpenDialogCommand),在等待对话框的打开与关闭事件中做登录逻辑处理。

private async Task<bool> ValidateCreds()
{// 模拟登录// 你可以发送登录信息到服务器,得到认证回馈await Task.Delay(TimeSpan.FromSeconds(2));Random gen = new Random(DateTime.Now.Millisecond);int loginProb = gen.Next(100);return loginProb <= 20;
}private async void OpenCB_DialogOpened(object sender, MaterialDesignThemes.Wpf.DialogOpenedEventArgs eventArgs)
{try{this.IsJustStarted = true;this.LoginStatusmsg = "";bool isLoggedIn = await ValidateCreds();if (isLoggedIn){// 需要关闭登录对话框并显示主窗口eventArgs.Session.Close(true);}else{// 登录失败,设置false作为参数eventArgs.Session.Close(false);}}catch (Exception){//throw;}
}private void ClosingCB_DialogClosing(object sender, MaterialDesignThemes.Wpf.DialogClosingEventArgs eventArgs)
{if (eventArgs.Parameter == null){return;}IsLoggedIn = (bool)eventArgs.Parameter;IsJustStarted = false;if(IsLoggedIn){this.LoginStatusmsg = I18nManager.Instance.Get(I18nResources.Language.FoodAppLoginView_Success).ToString();}else{this.LoginStatusmsg = I18nManager.Instance.Get(I18nResources.Language.FoodAppLoginView_Fail).ToString();}
}

等待对话框打开事件中,模拟登录逻辑。

等待对话框关闭事件中,做界面响应信息。

5. 源码下载

上面只贴了部分关键代码,源码已放Github中。

参考视频:WPF Food App Login UI Material Design [Speed Design][2]

Demo源码:FoodAppLoginUI[3]

[1]

TerminalMACS.ManagerForWPF: https://github.com/dotnet9/TerminalMACS.ManagerForWPF

[2]

WPF Food App Login UI Material Design [Speed Design]: https://www.youtube.com/watch?v=1i5oWNvIYmo

[3]

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

关注Dotnet9,分享更多好文

如果本文对你有用,

不妨点个“在看”或者转发朋友圈

????Github源码查询

.NET 5 开发WPF - 美食应用登录UI设计相关推荐

  1. html登录界面设计代码_.NET 5 开发WPF - 美食应用登录UI设计

    Demo演示: 你的时间宝贵,不想看啰嗦的文字,可直接拉到文末下载源码! 1. 新建项目 站长开发环境: VS 2019企业版 16.70 .NET 5 Preview 5 .NET 5 WPF 项目 ...

  2. 基于Android小巫新闻客户端开发---显示新闻详细内容UI设计

    基于Android小巫新闻客户端开发---显示新闻详细内容UI设计 2013年2月27日,天气潮湿!!! 距上一次写的主界面业务逻辑实现,已经过来11天,小巫觉得拖得太久了,所以决定尽量把所有的内容介 ...

  3. 【Android UI设计与开发】9:滑动菜单栏(一)开源项目SlidingMenu的使用和示例-转...

    一.SlidingMenu简介 相信大家对SlidingMenu都不陌生了,它是一种比较新的设置界面或配置界面的效果,在主界面左滑或者右滑出现设置界面效果,能方便的进行各种操作.很多优秀的应用都采用了 ...

  4. APP开发中的UI设计

           UI设计是 APP开发中一个必不可少的部分,用户体验也是影响 APP产品成功与否的重要因素,用户体验包括用户的使用感受和操作感受.就 UI设计来说,它的主要内容有:界面.图标.颜色.字体 ...

  5. Android新闻客户端开发3--显示新闻详细内容UI设计

    基于Android小巫新闻客户端开发---显示新闻详细内容UI设计 2013年2月27日,天气潮湿!!! 距上一次写的主界面业务逻辑实现,已经过来11天,小巫觉得拖得太久了,所以决定尽量把所有的内容介 ...

  6. pyqt 获取 UI 中组件_安卓ui设计智能输入法如何开发,这里有介绍

    安卓是目前国内使用人数最多的一种操作系统.很多人都在使用安卓的输入法.其实小编要告诉大家,学会了ui设计,你也可以设计输入法.今天就让小编为大家介绍安卓ui设计智能输入法如何开发. 安卓ui设计智能输 ...

  7. UI设计书籍推荐,这三本好书你不能错过

    UI设计近几年发展时态一片良好,UI设计师也顺势成了热门行业,但是行业专业技能人才还是很稀缺的,对这一行有想法的朋友也要动起来了,我们需要必要的充电.这里小编整理了一些UI设计书籍,希望能帮到大家.U ...

  8. UI设计初学者应该如何入门?

    1.UI设计师是什么? 不说UI设计师,就连设计师,很多人都以为只是P图的美工,这里有必要先明确一下UI设计师的概念.当我们要学习一门技能,进入一个行业的时候,此时此刻正确的认知对于我们来说太重要了. ...

  9. UI设计干货可临摹素材|打造精美的UI界面!

    设计一套精美可用和能解决用户问题的UI是需要花费一定时间的,并且在这过程中,你需要不断调整与打磨细节直到你的客户.用户和您自己真正觉得不错的东西.入门新手不容易掌握其中的要点,建议多临摹优秀作品,实实 ...

最新文章

  1. AndroidStudio git 提交代码,创建分支,合并分支,回滚版本,拉取代码
  2. snort源码的详细分析
  3. js 判断是不是数字||判断字符串是不是数字(正则表达式)
  4. 论文排版之公式居中、编号右对齐
  5. mysql blob 字段_MySQL中TEXT与BLOB字段类型的区别
  6. 改变图标颜色_LOL设计师宣布修改装备图标:提高清晰度、颜色差异化
  7. javaone_JavaOne 2015 –提交技巧和建议
  8. flask redis_在Flask应用程序中将Redis队列用于异步任务
  9. (转载)SQL Server2008附加数据库之后显示为只读时解决方法
  10. Python官方文档学习心得(第四篇)
  11. 出现问题protected:void __thiscall CTalkCDlg::OnIdok(void)(?OnIdok@CTalkDlg@@IAEXXZ)?
  12. CopyQq program山寨QQ项目
  13. 【有利可图网】推荐!设计师必备配色宝典!
  14. SOLIDWORKS工程图导出DWG图纸时图层映射关系
  15. 免费易用的Web版OFD阅读器
  16. 悟空CRM客户关系管理系统测试
  17. Hazel游戏引擎(005)入口点
  18. 【JAVA】PAT 乙级 1059 C语言竞赛(测试点1、2超时) 内含1-10000的素数表和0-10000是否素数的boolean值
  19. 2023计算机毕业设计SSM最新选题之java公交电子站牌管理系统软件9430l
  20. 在excel中如何筛选重复数据_Excel 在大量数据中快速筛选出重复数据

热门文章

  1. JavaScript全面学习(中阶)
  2. 单一职责原则--设计模式系列
  3. FastDFS 安装
  4. 面向对象——一起来复习托付与事件!
  5. Hive中视图机制的初步使用及分析
  6. 浙大月赛C题(2012/8)Cinema in Akiba(线段树)
  7. Android 开发学习资源
  8. WPF企业内训全程实录(下)
  9. Teams与OneDrive for Business和SharePoint的关系
  10. geek_享受How-To Geek用户样式脚本的好处