目录
基础知识:
WPF的特点:
WPF的优点
什么是XAML?
布局基础:
样式的应用:
控件模板(ControlTemplate):
数据模板(DataTemplate):
静态资源StaticReSource跟动态资源DynamicResource的区别:
绑定
绑定的类型:
绑定的模式:默认是双向绑定
什么是上下文,DataContext?
什么是通知更改?
什么是命令ICommand?
动画基础:
配置自动查找上下文,也就是配置View和ViewModel的关系
WPF框架之MvvmLight
WPF框架之Prism
Prism区域介绍
Prism模块化介绍
Prism导航功能
Prism对话服务,即打开新窗口功能
Prism事件的发布和订阅
工作单元和仓储:
AutoMapper的作用
基础知识:
WPF的特点:
- UI与业务分离
- 数据绑定
WPF的优点
- 具有良好的面向对象思想) WPF经常利用各种继承关系、多态性、重载等。
- 需要了解数据绑定。 绑定是WPF的一大亮点。
什么是XAML?
XAML是可扩展应用程序标记语言,是一种基于XML的声明性语言,可用于创建应用程序UI
优势:
- 将界面设计与逻辑编码分离
- 标签化的语法,通俗易懂
布局基础:
所有的东西都放在一个Grid里面,Window == winform里面的Form窗体,
样式的应用:
控件模板(ControlTemplate):
用来修饰控件的外观的,可以对控件进行比较复杂的设计。
绑定控件的属性,但只能绑定控件本身带有的属性,
数据模板(DataTemplate):
数据来驱动ui的显示,而不是在业务代码中穿插UI控件的
静态资源StaticReSource跟动态资源DynamicResource的区别:
静态资源在第一次初始化之后就不会改变了,动态资源可以在资源发生改变时候改变。
资源字典:将一些通用的样式之类的放到一个资源字典中,方便重复使用
资源字典的配置:
资源字典的查找:
DataGrid的应用:
绑定
var bind = new Binding(); // 实例化一个新绑定
bind.Source = txb1; // 设置源
bind.Path = new PropertyPath("Text"); // 设置要绑定的属性
bind.Mode = BindingMode.TwoWay; // 设置绑定模式
txb2.SetBinding(TextBox.TextProperty, bind); // 设置绑定
绑定的类型:
- 控件与控件之间的绑定
- 控件与属性之间的绑定
绑定的模式:默认是双向绑定
- 单向绑定
- 双向绑定
- 一次绑定
什么是上下文,DataContext?
xaml前端所需要绑定的字段,数据源等,都来自于后端的ViewModel,这个ViewModel就是需要绑定的上下文,不然找不到对应的数据源
什么是通知更改?
前段绑定的字段被重新赋值时,需要通过通知更改去更新前端的值,在属性的set方法中去调用通知更改的方法,传递的参数可以值要修改的属性的名称,也可以为空。
什么是命令ICommand?
WinForm里面的事件驱动模型,当界面跟业务发生改变时,需要改动的地方会比较多。命令就是用来解决这个问题,将UI与业务分离。
命令其实就是定义了某一个操作,写在ViewMode里面,
UI绑定:
ViewModel中创建Command:
自定义的Command:继承自ICommand
带参数的command。参数从输入框中来,绑定方法如下:
动画基础:
引用的命名空间:
在wpf中的动画分类:
- 线性动画
- 关键帧动画
- 路径动画
配置自动查找上下文,也就是配置View和ViewModel的关系
一般还是使用代码的方式,但新版本好像默认就是有这个约定的,不用配置也行。
WPF框架之MvvmLight
特点:
- 轻量级
WPF框架之Prism
配置自动查找ViewModel
Prism区域介绍
在我们的应用程序或者窗体当中去制定某一块区域,并且给它命名,就能在区域管理类中通过名字去查找到这个区域,并将其它页面,或者内容加载到这个区域。
设置区域:
Prism模块化介绍
这个模块指的其实一些类库什么的,其实类似于我在诊所客户端中,利用反射的方式加载不同功能的方法,将功能模块化,并且不在主程序中直接进行添加应用。
Prism中实现模块化的方式:
- 通过代码的方式
- 通过配置文件的方式
通过代码的方式:添加引用的方式,再通过重写ConfigureModuleCatalog方法把模块加载进来
缺点是:
- 不方便,当修改引用的时候要来修改代码
通过批量加载的文件夹中的Module
- 首先,要设置一种查找的方式
- 然后每个模块都有一些约定的东西,如继承IModule,在这个类里面去写容器服务
Prism导航功能
导航的上一步,下一步,通过导航日志来实现。
导航日志Journal的获取:
上一步,下一步命令的委托命令的创建与实现
Prism对话服务,即打开新窗口功能
- 跟打开导航类似,也可以传递参数跟接收返回值
具体实现:
- 新窗体对应的ViewModel要继承并IDialogAware接口
- 设置窗体的上下文
- 在主程序中,编写要传递的参数,以及对回调函数进行处理
Prism事件的发布和订阅
可以有多个发布者,也可以有多个订阅者。
一个简单的string类型的消息事件:继承一个泛型类
发送消息:
订阅和取消订阅:
这个有什么用?
可以实现跨模块的一些消息的发布和订阅。
工作单元和仓储:
用工作单元的目的:为了多个仓储之间共享一个上下文,确保数据一致性。
使用仓储repositoty的目的,为了解耦,相当于封装了一层服务。
AutoMapper的作用
实现了把数据传输层实体映射成数据库实体的功能
完整的教学视频来源:
2.WPF样式基础_哔哩哔哩_bilibili