WPF基础学习笔记

news2024/11/25 7:09:39

目录

基础知识:

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧工地,筑牢安全防线:严防塔吊相撞,守护施工安全之巅!

塔吊相撞的事故是一个严重的施工安全问题,而智慧工地则是一种利用现代科技手段提高施工安全性的解决方案。 为了避免类似事故的发生,智慧工地可以采取以下措施: 一、建立全面的监控系统 智慧工地可以建立完善的监控系统,通过安装…

Github 2024-05-08 C开源项目日报 Top8

根据Github Trendings的统计,今日(2024-05-08统计)共有8个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目8PHP项目1Python项目1C++项目1PHP:流行的Web开发脚本语言 创建周期:4710 天开发语言:C, PHP协议类型:OtherStar数量:37340 个Fork数量…

Layer创建流程

在SurfaceFlinger中,Layer表示一个显示图层,是surfaceflinger合成过程中最重要的基本单元,它提供了一系列属性定义了如何参与合成并与其他Layer交互,包括: 位置:定义Layer出现在屏幕上的位置,包…

营销H5测试综述

H5页面是营销域最常见的一种运营形式,业务通过H5来提供服务,可以满足用户对于便捷、高效和低成本的需求。H5页面是业务直面用户的端点,其质量保证工作显得尤为重要。各业务的功能实现具有通用性,相应也有共性的测试方法&#xff0…

蓝桥杯13届JAVA A组 国赛

​​​​​​​ package 蓝桥杯国赛; // 贪心选个数最少的进行摆 // 2:1 ,3:1, 4:1,5 : 3,6:3,7:1 // 选 1,7,4,2,3,5,9 // 然后都选满10个 public class 火彩棒数字 {public static void main(String[] a…

人工智能-2024期中考试

前言 人工智能期中考试,认真准备了但是没考好,结果中游偏下水平。 第4题没拿分 (遗传算法:知识点在课堂上一笔带过没有细讲,轮盘赌算法在书本上没有提到,考试的时候也没讲清楚,只能靠猜&…

主数据准确性和完整性竟如此重要?确保这两大特性做好这些就够了

主数据是企业运营的心脏,它包含了客户、产品、供应商和员工等关键业务实体的详细信息。这些数据的准确性、一致性和完整性对于确保企业决策的质量、优化业务流程、提高客户满意度、推动数据驱动的创新、遵守法规要求以及维护数据安全至关重要。 主数据的准确性指的…

亚信科技精彩亮相2024中国移动算力网络大会,数智创新共筑“新质生产力”

4月28至29日,江苏省人民政府指导、中国移动通信集团有限公司主办的2024中国移动算力网络大会在苏州举办。大会以“算力网络点亮AI时代”为主题,旨在凝聚生态伙伴合力,共同探索算力网络、云计算等数智能力空间,共促我国算网产业和数…

目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

文章目录 一、目标检测介绍二、YOLOv7介绍三、源码/论文获取四、环境搭建4.1 环境检测 五、数据集准备六、 模型训练七、模型验证八、模型测试九、错误总结9.1 错误1-numpy jas mp attribute int9.2 错误2-测试代码未能跑出检测框9.3 错误3- Command git tag returned non-zero…

利用Jenkins完成Android项目打包

问题和思路 目前存在的问题 打包操作由开发人员完成,这样开发进度容易被打断。 解决问题的思路 将打包操作交测试/产品/开发人员来完成,主要是测试/开发。 按照以上的思路,那么JenkinsGradle的解决方案是比较经济的,实现起来…

[Kotlin]创建一个私有包并使用

1.创建Kotlin项目 创建项目: 在Android Studio或其他IDE中选择“Create New Project”。选择Kotlin和Gradle作为项目类型和构建系统。指定项目名称和位置,完成设置。 添加依赖: 如果你的库需要额外的依赖,可以在 build.gradle (Module: app…

PostgreSQL自带的命令行工具13- pg_waldump

PostgreSQL自带的命令行工具13- pg_waldump 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:5777pg_waldump 是 Po…

扩展van Emde Boas树以支持卫星数据:设计与实现

扩展van Emde Boas树以支持卫星数据:设计与实现 1. 引言2. vEB树的基本概念3. 支持卫星数据的vEB树设计3.1 数据结构的扩展3.2 操作的修改3.3 卫星数据的存储和检索 4. 详细设计和实现4.1 定义卫星数据结构体4.2 修改vEB树节点结构4.3 插入操作的伪代码4.4 C语言实现…

STM32学习笔记--疑问篇

STM32学习笔记–疑问篇 GPIO是什么的缩写通用寄存器的缩写和全程 3.、这是什么的缩写 不同输出模式之间的差异 PB是GPIOB的缩写? 怎样知道端口应该设置成输入模式还是设置成输出模式

Mybatis的简介和下载安装

什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的…

mysql workbench如何导出insert语句?

进行导出设置 导出的sql文件 CREATE DATABASE IF NOT EXISTS jeesite /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ /*!80016 DEFAULT ENCRYPTIONN */; USE jeesite; -- MySQL dump 10.13 Distrib 8.0.28, for Win64 (x86_64) -- -- Host: 127.0…

MCU通过UART/SPI等接口更新flash的方法

MCU可提供一种方便的方式来更新flash内容以进行错误修复bugfix或产品更新update。可以使用以下任何模式更新flash内容: •系统内编程(ISP,In-System Programming):用于使用内部bootloader程序和UART/SPI对片上闪存进行编程program或重新编程reprogram。 •应用程序内编程…

vector介绍与使用【C++】

C vector 前言一、vector的介绍c文档介绍简介 二、vector的定义和使用vector的定义vector代码演示 vector的使用vector iterator 的使用vector 空间增长问题vector 增删查改vector 迭代器失效问题引起底层空间改变eraseg与vs检测比较string迭代器失效 vector 在OJ中的使用只出现…

Cisco NX-OS System Software - ACI 16.0(5h)

Cisco NX-OS System Software - ACI 16.0(5h) 适用于 ACI 模式下的 Cisco Nexus 9000 系列交换机 请访问原文链接:Cisco NX-OS System Software - ACI 16.0(5h),查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Cis…

AI预警未来:山体滑坡与塌方事故的潜在发现者

在科技日新月异的今天,人工智能(AI)的应用已经渗透到了我们生活的各个领域。而在防灾减灾的领域中,AI技术的引入无疑为我们打开了一扇新的大门。以梅大高速大埔往福建方向K11900m附近发生的路面塌方灾害为例,我们不禁思…