Demo演示: 站长开发环境: .NET 5 WPF 项目模板和 .NET Core 3.1 WPF 项目模板没有区别,创建好项目后,NuGet 引入 MaterialDesignThemes 库: 演示Demo就一个xaml文件和xaml.cs文件,为了方便后面收集WPF界面设计效果,统一放在了开源项目TerminalMACS.ManagerForWPF中,所以控件样式引用直接在FoodAppLoginView.xaml中添加: 见上面GIF动画,登录窗口加载时,用户名输入框、密码输入框、记住密码、右侧背景图片等元素有动画效果,每个部分代码结构类似,比如下面的用户名输入框代码: 使用了开源控件MD的TransitioningContent组件,其中TransitionEffect的Kind属性设置控件动画方向。 登录按钮布局代码: 点击登录时,打开等待对话框(点击时绑定了materialDesign:DialogHost.OpenDialogCommand),在等待对话框的打开与关闭事件中做登录逻辑处理。 等待对话框打开事件中,模拟登录逻辑。 等待对话框关闭事件中,做界面响应信息。 上面只贴了部分关键代码,源码已放Github中。 参考视频:WPF Food App Login UI Material Design [Speed Design] Demo源码:FoodAppLoginUI
 
 你的时间宝贵,不想看啰嗦的文字,可直接拉到文末下载源码!1. 新建项目
2.引入样式
<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.控件动画效果
<!--#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--> 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--> 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. 源码下载
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
 官方软件产品操作指南 (170)
官方软件产品操作指南 (170)