WPF应用程序(.NET Core)
作者:互联网
WPF应用程序框架(.NET Core)
--此博客编写WPF为.net Core型,编写.net Framework型参考博客--https://www.cnblogs.com/ZhuMeng-Chao/p/16362541.html
--WPF教程视频可以参考 https://www.bilibili.com/video/BV1nY411a7T8?p=1&spm_id_from=pageDriver
1、创建程序
2、创建成功初始信息
3、配置
3-1:App.xaml引入materialDesign ui资源 (类似于引用element ui)
3-1-1 安装包MaterialDesignThemes
3-1-2 App.xaml中代码引入materialDesign ui资源
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
<ResourceDictionary> <!-- 引入materialDesign ui资源 --> <ResourceDictionary.MergedDictionaries> <materialDesign:BundledTheme BaseTheme="Light" PrimaryColor="DeepPurple" SecondaryColor="Lime" /> <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary>
3-1-3 应用materialDesign ui资源效果(类似用element ui控件)
3-1-3 加入工具--实现代码格式化
https://zhuanlan.zhihu.com/p/345257435
4、框架
4-1 默认没有注入之类的 --所以引入第三方架构prism
4-1-1 安装prism (prism.Dryioc包)
4-1-2 代码引入prism
xmlns:prism="http://prismlibrary.com/"
4-2 配置上prism框架
4-2-1 App.xaml.cs文件中修改其基类
PrismApplication
4-2-2 修改基类后又对应错误(未配置)信息
4-2-3 解决 1: 其.cs文件对应的.xaml文件也应该修改
<prism:PrismApplication></prism:PrismApplication>
--未解决完错误信息:
4-2-4 解决 2: 其加入对应代码
1 protected override Window CreateShell() 2 { 3 //默认启动页面 4 return Container.Resolve<MainWindow>(); 5 } 6 7 /// <summary> 8 /// prism的视图和model的映射 9 /// </summary> 10 protected override void RegisterTypes(IContainerRegistry containerRegistry) 11 { 12 ////注册 view 与 viewmodel 的映射关系 13 //containerRegistry.RegisterForNavigation<LoginView, LoginViewModel>(); 14 15 ////注册 home 与 homeViewModel 的映射关系 16 //containerRegistry.RegisterForNavigation<Home, HomeViewModel>(); 17 }View Code
4-3 创建对应登录文件完成登录
4-3-1 创建 .xaml 文件
4-3-2 创建其对应.cs 文件
4-3-3 在Appp.xaml.cs中将两者(.xaml与其对应的.cs文件)建立起联系-关联
containerRegistry.RegisterForNavigation<LoginView, LoginViewModel>();
4-3-4 登录页面显示布局
4-3-4.1 实现登录时页面布局上有个图片(切记第三步那里改为资源,授课时说的容易不显示)
4-3-4.2 页面布局1--图片显示
4-3-4.2 页面布局2---实现有默认提示文字
例如:布局文本框里面的提示文字--注意--需要申明一下这样布局
完成基本布局
4-3-5 实现以弹出层方式运行该登录页面
4-3-5.1 新建一个.xmal页和对应.cs文件并将其设置为起始页,然后运行开始通过dialog方式弹出登录弹出层
--右键项目--添加--用户控件=》实现添加一个xmal页;并新建一个对应.cs文件;设置启示页+添加映射;
4-3-5.2 App.xaml中编写初始化方法--实现项目启动的时候, 首先弹出登录框,进行登录
1 /// <summary> 2 /// 初始化方法 3 /// </summary> 4 protected override void OnInitialized() 5 { 6 //项目启动的时候, 首先弹出登录框,进行登录 7 var dialog = Container.Resolve<IDialogService>(); 8 dialog.ShowDialog("LoginView", callback => 9 { 10 //如果选择的不是登录,则直接关闭程序 11 if (callback.Result != ButtonResult.OK) 12 { 13 //关闭程序 14 Environment.Exit(0); 15 return; 16 } 17 //var service = App.Current.MainWindow.DataContext as IConfigureService; 18 //if (service != null) 19 // service.Configure(); 20 base.OnInitialized(); 21 }); 22 23 }View Code
异常报错:
解决:
1、登录页引入dialog配置
1 <prism:Dialog.WindowStyle> 2 <Style TargetType="Window"> 3 <Setter Property="Width" Value="600" /> 4 <Setter Property="Height" Value="350" /> 5 <Setter Property="SizeToContent" Value="WidthAndHeight" /> 6 <Setter Property="ResizeMode" Value="NoResize" /> 7 <Setter Property="prism:Dialog.WindowStartupLocation" Value="CenterScreen" /> 8 </Style> 9 </prism:Dialog.WindowStyle>View Code
xmlns:prism="http://prismlibrary.com/"
2、对应cs文件添加继承
--再次运行出现错误信息
解决---对应的继承实现方法最开始先按照如图红框里的编辑(目前先可正常运行)
实现窗口显示:
4、登录页布局完善
1、点击登录系统按钮,有一个加载转圈的实现
2、密码或者账号输入错误有对应信息弹出提示
实现一:
1 xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes" 2 3 <md:DialogHost 4 x:Name="DialogHost" 5 DialogTheme="Inherit" 6 Identifier="Root"> 7 </md:DialogHost>View Code
LoginView.xaml.cs文件使用prism 事件聚合器对应事件实现加载转圈效果
1 /// <summary> 2 /// LoginView.xaml 的交互逻辑 3 /// </summary> 4 public partial class LoginView : UserControl 5 { 6 public LoginView(IEventAggregator aggregator, LoginViewModel view) 7 { 8 InitializeComponent(); 9 //使用事件聚合器 加载动画 10 aggregator.WaitForResgiter(arg => 11 { 12 Dispatcher.Invoke(new Action(() => 13 { 14 DialogHost.IsOpen = arg.IsOpen; 15 if (DialogHost.IsOpen) 16 DialogHost.DialogContent = new ProgressView(); 17 })); 18 }); 19 // DialogHost 20 } 21 }WaitForResgiter
创建一个放置加载转圈的那个控件xmal页面 --右键--新增--用户控件
1 <StackPanel Width="100"> 2 <ProgressBar 3 Width="40" 4 Height="40" 5 Margin="20" 6 IsIndeterminate="True" 7 Style="{StaticResource MaterialDesignCircularProgressBar}" /> 8 </StackPanel>StackPanel
对应model.cs文件(LoginViewModel.cs)中对应按钮触发事件里编写使用事件聚合器里的事件
完成效果
实现二:
1 <!-- -消息提示 --> 2 <md:Snackbar 3 x:Name="LoginSnackBar" 4 Grid.ColumnSpan="2" 5 Panel.ZIndex="1" 6 MessageQueue="{md:MessageQueue}" />Snackbar
LoginView.xaml.cs文件使用prism 事件聚合器对应事件实现弹出信息框显示
1 //使用事件聚合器 消息提示 2 aggregator.ResgiterMessage(arg => 3 { 4 Dispatcher.Invoke(new Action(() => 5 { 6 LoginSnackBar.MessageQueue.Enqueue(arg.Message); 7 })); 8 });View Code
对应所需要弹框出编辑内容
实现效果
5、调用api接口实现登录
标签:Core,登录,--,xaml,对应,prism,cs,WPF,NET 来源: https://www.cnblogs.com/ZhuMeng-Chao/p/16393226.html