Demo演示:

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

1. 新建项目

站长开发环境:

  • VS 2019企业版 16.70
  • .NET 5 Preview 5

.NET 5 WPF 项目模板和 .NET Core 3.1 WPF 项目模板没有区别,创建好项目后,NuGet 引入 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

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

  1. .NET 5 开发WPF - 美食应用登录UI设计

    点击上方"Dotnet9"添加关注哦 Demo演示: 演示动画 你的时间宝贵,不想看啰嗦的文字,可直接拉到文末下载源码! 1. 新建项目 站长开发环境: VS 2019企业版 16 ...

  2. 微信登录界面安卓代码_「微信多开神器」一键安排你的所有微信

    很多人都有两个微信号,一个用于工作,和同事老板打交道.一个用于生活,时不常发发牢骚. 现在的安卓手机上大多自带微信双开的功能,很方便.但电脑上如何同时登陆两个微信呢? 一.使用bat文件,无限制多开微 ...

  3. 微信登录界面安卓代码_【雷电说明书】安卓模拟器微信登录闪退,转圈,停止运行解决方法...

    雷电模拟器微信登录不上,微信闪退,模拟器微信停止运行等等问题一直在论坛出现,雷电模拟器最新版本已经解决了大部分的微信登录问题了.还是会有小部分伙伴出现了难以解决的问题,微信停止运行一般是建议安装最新雷 ...

  4. 微信登录界面安卓代码_安卓模拟器微信登录闪退,转圈,停止运行解决方法

    雷电模拟器微信登录不上,微信闪退,模拟器微信停止运行等等问题一直在论坛出现,雷电模拟器最新版本已经解决了大部分的微信登录问题了.还是会有小部分伙伴出现了难以解决的问题,微信停止运行一般是建议安装最新雷 ...

  5. android 登录界面开源代码_【程序源代码】一个安卓查询类app制作的开源项目

    " 关键字:工作流 框架 springboot" 正文:一个学习安卓查询类app制作的开源项目.可以用来联系查询类app的编写. 01 - android studio最近势头好猛 ...

  6. php网页制作代码_如何制作一个简单的HTML登录页面(附代码)

    几乎每个网站都会有登录页面,那你知道如何写HTML登录页面吗?这篇文章就和大家分享一个HTML简单登录界面的代码,有一定的参考价值,感兴趣的朋友可以看看. 制作登录页面需要用到很多CSS属性和HTML ...

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

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

  8. UI设计和平面设计学哪个好?平面设计转行做UI设计容易吗?

    本文由:"学设计上兔课网"原创,图片素材来自网络,仅供学习分享 UI设计和平面设计学哪个好?平面设计转行做UI设计容易吗?早期的UI设计和网页设计一样,都是平面设计的基础上衍生出来 ...

  9. html登录界面设计代码_最简洁实现Github登录的JS代码示例

    本文源码地址:https://github.com/Spring-Security-China/oauth2-client-login-js-github 大纲 概述 实现思路分析 在Github官网 ...

最新文章

  1. 配置系统在开机时启动虚拟机
  2. Deepin下tftp客户端传送升级文件失败问题分析
  3. SpringMVC获取参数的几种方式
  4. python3 shell 正则表达式 攫取复杂字符串特定子串
  5. 35个不会也要知道的Python小技巧
  6. 安宁计算机学院,滁州学院张燕咏、安宁两位教授应邀来我院指导工作
  7. 程序员修复bug的吐血过程,太形象了
  8. 怎么在html使用百度商桥,电脑版网站如何添加爱番番(原:百度商桥)
  9. python软件测试工程师岗位多_软件测试工程师常见的17道Python面试题【多测师_王sir】...
  10. 随机微分方程学习笔记04 Ito公式
  11. java单例模式——双重检查
  12. OpenNI和Kinect安装中文教程
  13. android APP自动增量更新
  14. Linux内存管理(四十):Linux PSI 详解
  15. 赚钱宝3代玩客云网心云 安装armbian docker 宝塔 青龙 openwrt
  16. 2022-2028全球与中国电子漏水检测设备市场现状及未来发展趋势
  17. 如何关闭电脑自动更新?方案三部曲带你走出自动更新的阴影
  18. K8S使用ceph-csi持久化存储之cephfs部署验证快照
  19. 【论文精读】Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting
  20. iview tooltip: true, 处理文字,溢出用点代替

热门文章

  1. javascript图书
  2. OpenCV探索之路(三):滤波操作
  3. MySQL表名不区分大小写的设置方法
  4. Vijos P1067Warcraft III 守望者的烦恼
  5. CROSS APPLY 和outer apply
  6. python函数五要素_Python安装及关键要素
  7. java中的静态初始化是什么意思,Java中static静态变量的初始化完全解析
  8. java for 死循环_简单的java死循环 java中的死循环问题
  9. python界面开发pyqt_Python2.7+PyQt4进行界面开发
  10. java exception 乱码_java 常见中文乱码问题解决