ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

WPF应用程序(.NET Core)

2022-06-22 09:02:55  阅读:266  来源: 互联网

标签:Core 登录 -- xaml 对应 prism cs WPF NET


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有