WPF基础学习笔记

目录

基础知识:

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

  1. 首先,要设置一种查找的方式
  2. 然后每个模块都有一些约定的东西,如继承IModule,在这个类里面去写容器服务

Prism导航功能

 导航的上一步,下一步,通过导航日志来实现。

导航日志Journal的获取:

上一步,下一步命令的委托命令的创建与实现

Prism对话服务,即打开新窗口功能

  • 跟打开导航类似,也可以传递参数跟接收返回值

具体实现:

  1. 新窗体对应的ViewModel要继承并IDialogAware接口
  2. 设置窗体的上下文
  3. 在主程序中,编写要传递的参数,以及对回调函数进行处理

Prism事件的发布和订阅

可以有多个发布者,也可以有多个订阅者。

一个简单的string类型的消息事件:继承一个泛型类

发送消息:

订阅和取消订阅:

这个有什么用?

可以实现跨模块的一些消息的发布和订阅。

工作单元和仓储:

用工作单元的目的:为了多个仓储之间共享一个上下文,确保数据一致性。

使用仓储repositoty的目的,为了解耦,相当于封装了一层服务。

AutoMapper的作用

实现了把数据传输层实体映射成数据库实体的功能

完整的教学视频来源:

2.WPF样式基础_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/624597.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kasawaki川崎机器人故障维修

在当今的自动化工业领域,川崎工业机器人以其卓越的性能和可靠的工作效率赢得了广泛的赞誉。作为机器人的核心组成部分,伺服电机的作用至关重要。然而,就像所有机械设备一样,也可能会遭遇电机磨损或故障,需要适时的川崎…

如何为域名生成证书签发请求CSR

最近我们在Hostease购买了服务器产品,为了保障我们网站的安全,我们额外还购买了SSL证书产品。在Hostease技术客服的帮助下,我们成功签发了SSL证书。 在签发证书前需要生成一个证书签名请求CSR,证书签名请求(CSR)是一个包含有关你…

【计算机网络】http协议的原理与应用,以及https是如何保证安全传输的

HTTP 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 HTTP的发展是由蒂姆伯纳斯-李于1989年在欧洲核子研究组织…

欣意无限信息技术有限公司邀您参观2024长三角快递物流展

参展企业介绍 郑州欣意无限信息技术有限公司成立于2017年,公司经营范围计算机网络技术开发、技术咨询、技术服务、技术转让:商务信息咨询服务;市场营销策划;设计、制作、代理、发布国内广告业务;电脑图文设计&#xff…

[IMX6ULL驱动开发]-GPIO子系统和Pinctrl子系统

目录 Pinctrl子系统的概念 GPIO子系统的概念 定义自己的GPIO节点 GPIO子系统的函数 引脚号的确定 基于GPIO子系统的驱动程序 驱动程序 设备树修改 之前我们进行驱动开发的时候,对于硬件的操作是依赖于ioremap对寄存器的物理地址进行映射,以此来达…

C++笔试强训day21

目录 1.爱丽丝的人偶 2.集合 3.最长回文子序列 1.爱丽丝的人偶 链接 简单叙述就是每个数的左右两边不能一个比他大,一个比他小。 反之,就是要让每个数的左右两边数都大于或者都小于他。 方法一:一开始我想复杂了,其实用试错法…

Pycharm使用Anaconda虚拟环境

一、前置 安装 Pychram安装 Anaconda,并配置虚拟环境 参考: Anaconda虚拟环境 anaconda虚拟环境pytorch安装 二、在Pycharm中使用Anaconda的虚拟环境 打开 Pycharm的命令行可以看到 Anaconda 的虚拟环境已经启动。 三、问题集合 (1&…

IDEA报错:java 找不到符号

IDEA报错:java 找不到符号,代码没问题,IDEA缓存也清理了也重新构建了就是不行 最后使用终极大法 -Djps.track.ap.dependenciesfalse

海外仓混合订单拣货策略:人工与海外仓系统的最佳搭配模式

根据订单高效拣货是任何海外仓都要面对的问题。只有当订单可以被高效,准确的拣货之后,才能继续走下面的物流流程,所以尽可能的缩短拣货时间,提升拣货精准度,才是提升订单交付率的最佳方法。 海外仓企业都在不断寻找&am…

直播预告-如何快乐学习亚马逊云科技AWS,玩游戏备考亚马逊云科技云从业者认证?

一边玩一边学习亚马逊云科技云技能,这么好的事尊的假的?本周六(5约11日)晚20点,亚马逊云科技UG云端夜话Night Talk活动精彩回归~ 本次亚马逊云科技UG云端夜话直播是什么? 小李哥这次将在多平台…

Redis-集群方案

文章目录 Redis集群方案是用来做什么的?Redis集群方案有哪些?主从复制集群哨兵(Sentinel)集群Cluster分片集群第三方集群方案 更多相关内容可查看 Redis集群方案是用来做什么的? Redis集群方案是用来解决单节点Redis的…

知识图谱开发日志

应用于应用环境的配置.测试.发布 假如你写了一个web,并且测试调试都没有问题 并且,你想发给你的朋友,导师,或者部署到远程云服务器上 那么,你需要配置相同的软件,比如数据库,web服务器,必要的插件,库,etc…但这并不一定能保证软件的正常运行,因为别人可能使用完全不同的操作系统…

什么是CCRC?做什么用的?

CCRC(中国网络安全审查认证和市场监管大数据中心)原名为中国网络安全审查技术与认证中心,也被称为中国信息安全认证中心(ISCCC)。 该中心是经中央机构编制委员会办公室批准成立的,其主要职责是依据国家法律…

springboot通过 EasyExcel.read()方法解析csv(excel)文件中的数据用list接收

springboot通过 EasyExcel.read()方法解析csv(excel)文件中的数据用list接收 文章目录 前言一、EasyExcel是什么?二、使用步骤1.引入库2.接收数据的实体类3.处理字典值ExcelDictConverter4.把文件中的数据解析出来放入…

Vue3+TS实现将html或富文本编辑器转为Word并下载

说明:我用的富文本编辑器是wangEditor: wangEditor官网 安装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save yarn add wangeditor/editor-for-vuenext # 或者 npm install wangeditor/editor-for-vuenext --save yarn add …

CRM系统业务学习

与HR系统的联动 在CRM销售域里的账号都要和HR系统关联,如果离职了,CRM这里也会不允许登陆。 CRM工作台 通知公告、待办消息、线索跟进、日历任务。 CRM套件 线索与线索池、客户与公海池、跟进计划与跟进记录、联系人、商机等。 CRM标准业务流程 CR…

把视图放进对话框

大家好,才是真的好。 要是我没记错的,我们很久没有说到开发的话题了,尤其是关于lotusscript代码功能的问题。 今天我们讲一个非常实用的小功能。即在对话框当中显示一个视图,然后从该视图选择单个或多个文档,并把选中…

企业OA办公系统开发笔记:2、MyBatis-Plus

文章目录 企业办公系统:2、MyBatis-Plus一、MyBatis-Plus1、简介2、主要特点3、依赖 二、MyBatis-Plus入门1、配置文件2、启动类3、实体类4、添加Mapper类5、测试Mapper接口6、CRUD测试6.1、insert添加6.1.1、示例6.1.2、主键策略 6.2、更新6.3、删除6.3.1、根据id删…

eNSP PRO安装完整版(超详细)

目录 eNSP PRO包: 安装步骤: eNSP PRO包: 链接: https://pan.baidu.com/s/12oBJ708OHMZlhj8nS21HSw?pwdr64q 提取码: r64q 安装步骤: 将ensp pro的包下载并且解压出来 在Oracle VM VirtualBox,将我们解压好的en…

WMS仓储管理系统如何让仓库管理有过程

在当今竞争激烈的商业环境中,WMS仓储管理系统的智能化与过程化管理显得尤为重要。一个具有过程管理的WMS仓储管理系统不仅能够帮助企业实时监控、分析和调度仓库作业,还能显著提升作业效率和成本控制能力。下面,我们就来深入探讨一下这种“有…