WPF入门0:WPF的基础知识

article/2025/9/22 3:27:20

WPF入门0:WPF的基础知识

WPF 可创建动态的数据驱动的呈现系统。 系统的每一部分均可通过驱动行为的属性集来创建对象。 数据绑定是系统的基础部分,在每一层中均进行了集成。

传统的应用程序创建一个显示内容,然后绑定到某些数据。 在 WPF 中,控件的所有内容、显示内容的所有方面都是由某种类型的数据绑定生成的。 通过在按钮内部创建复合控件并将其显示内容绑定到按钮的内容属性,会显示按钮中的文本。

WPF体系结构图:

在这里插入图片描述

  • PersentationFramework.dll包含WPF顶层的类型,包括哪些表示窗口、面板以及其他类型控件的类型。他还实现了高层编程抽象,如样式。开发人员直接使用的大部分类都来自这个程序集
  • PresentationCore.dll包含了基础类型,如UIElement类和Visual类,所有形状类和控件类都继承自这两个类。如果不需要窗口和控件抽象层的全部特征,可以使用这一层,并且仍能用WPF的渲染引擎。
  • WindowsBase.dll包含了更多基本要素,这些要素具有在WPF之外重用的潜能。
  • milcore.dll是WPF渲染系统的核心,也是媒体集成层的基础。
  • WindowsCodes.dll是一套提供图像支持的低级API(例如,处理、显示以及缩放位图与JPEG图像)
  • Direct3D是一套地基API,WPF应用程序中的所有图形都是由它渲染
  • User32用于决定哪些程序实际占有桌面的哪一部分。

WPF类层次结构图:

在这里插入图片描述
1.System.Threading.DispatcherObject类,通过继承此类,用户界面中的每个元素都可以检查代码是否在正确的线程上运行。

2.System.Windows.DependencyObject类,提供对依赖属性的支持。

在WPF中,主要通过属性与屏幕上的元素进行交往。在早期设计极阶段,wpf的设计者决定设计强大的属性模型,该模型支持许多特性,例如更改通知、默认值继承以及减少属性存储空间。最终结果就是依赖属性特性。
生成 WPF 时使用的主要体系结构原理之一是首选属性而不是方法或事件。 属性具有声明性,可更方便地指定用途而不是操作。 它还支持模型驱动或数据驱动的系统,以显示用户界面内容。 这种理念的预期效果是创建更多可以绑定到的属性,从而更好地控制应用程序的行为。

为了更加充分地利用由属性驱动的系统,需要一个比 CLR 提供的功能更丰富的属性系统。 这种丰富性的一个简单示例是更改通知。
若要实现双向绑定,需要绑定的双方支持更改通知。 若要使行为与属性值相关联,需要在属性值更改时收到通知。 Microsoft .NET Framework 具有一个 INotifyPropertyChange 接口,对象通过该接口可以发布更改通知,但该接口是可选的。

WPF 提供一个更丰富的属性系统,该属性系统从 DependencyObject 类型派生。
该属性系统实际是一个“依赖”属性系统,因为它会跟踪属性表达式之间的依赖关系,并在依赖关系更改时自动重新验证属性值。
例如,如果具有一个可继承的属性(如 FontSize),当继承该值的元素的父级发生属性更改时,系统会自动更新。

WPF 属性系统的基础是属性表达式的概念。 在 WPF 的第一个版本中,属性表达式系统是关闭的,表达式均作为框架的一部分提供。
表达式致使属性系统不具有数据绑定、样式调整或继承硬编码,而是由框架内后面的层来提供这些功能。

属性系统还提供属性值的稀疏存储。
因为对象可能有数十个(如果达不到上百个)属性,并且大部分值处于其默认状态(被继承、由样式设置等),所以并非对象的每个实例都需要具有在其上定义的每个属性的完全权重。

属性系统的最后一个新功能是附加属性的概念。 WPF 元素是基于组合和组件重用的原则生成的。 某些包含元素(如 Grid 布局元素)通常需要子元素上的其他数据才能控制其行为(如行/列信息)。
任何对象都可以为任何其他对象提供属性定义,而不是将所有这些属性与每个元素相关联。 这与 JavaScript 中的“expando”功能相似。

3.System.Windows.Media.Visual类,每个元素本质都是一个Visual对象,封闭绘图指令、绘画额外细节。

4.System.Windows.UIElement类,提供WPF本质特征的支持,如布局、输入、焦点、及事件。

UIElement 定义核心子系统,包括布局、输入和事件。

布局是 WPF 中的核心概念。 在许多系统中,可能有一组固定的布局模型(HTML 支持三种布局模型:流、绝对和表),也可能没有布局模型(User32 实际仅支持绝对定位)。
WPF 先假设开发人员和设计人员需要灵活的可扩展布局模型,该模型可能是由属性值而不是命令性逻辑驱动的。 在 UIElement 级别,会引入布局的基本协定 - 具有 Measure 和 Arrange 阶段的两阶段模型。

5.System.Windows.FrameworkElement类,是 WPF 框架级元素类,提供数据绑定、动画及样式的支持。

  • 6.System.Windows.Controls.Control类,为字体、前背景色及模板提供支持。

控件(Control)是可与用户进行交互的元素。如BUtton,texbox等,这些可与设置前景色、背景色提供了属性。也可以通过模板进行设置。
控件的最重要功能是模板化。 如果将 WPF 的组合系统视为一个保留模式绘制系统,则控件可通过模板化以一种参数化的声明性方式描述其绘制。 ControlTemplate 实际上只是用于创建一组子元素的脚本,绑定到由控件提供的属性。

Control 提供一组常用属性,例如 Foreground、Background、Padding,模板作者可以使用这些常用属性来自定义控件的显示。
控件的实现提供了数据模型和交互模型。 交互模型定义了一组命令(如窗口的“关闭”),以及到输入笔势的绑定(如单击窗口右上角的红叉)。
数据模型提供了一组属性,用于自定义交互模型或自定义显示内容(由模板确定)。
数据模型(属性)、交互模型(命令和事件)及显示模型(模板)之间的划分,可实现对控件的外观和行为的完全自定义。
最常见的控件数据模型是内容模型。 如果查看 Button 之类的控件,会看到它具有一个 Object 类型的名为“Content”的属性。 在 Windows 窗体和 ASP.NET 中,此属性通常是一个字符串 - 不过,这会限制可以在按钮中添加的内容类型。 按钮的内容可以是简单的字符串、复杂的数据对象或整个元素树。 如果是数据对象,可以使用数据模板构造显示内容。

  • 7.System.Windows.Controls.ContentControl类,所有具有单一内容类控件的基类。

-ContentControl 类是所有具有单一内容控件的基类。

  • 8.System.Windows.Controls.ItemsControl类,所有显示选项集合控件的基类。

所有选项集合的基类,如ListBox、TreeView控件。

9.System.Windows.Shapes.Shape类,基本形状类继承于此类。

  • 10.System.Windows.Controls.Panel类,所有布局窗口的基类。
  • Panle类是所有的布局的基类,布局容器是可包含一个或者多个子元素、并按特定的规则对子元素进行排列的元素。

Windows窗体编程中,窗体的每个可视化项都称为控件,在WPF中,情况不在如此,可视化内容被称为元素(element),只有部分元素是控件(控件是那些能够接收焦点并能与用户进行交互的元素)。更令人费解之处在于,许多元素是在System.Windows.Contrrols命名空间中定义的, 但是他们不是继承自System.Windows.Controls.Control类,并且不被认为是控件。Panle便是其中一个。

XMAL的命名空间

  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  

所有元素的生命周期:
在这里插入图片描述

//实例化:元素实例化,InitializeComponent();

1.Initialized:设置元素属性,应用样式及数据绑定后;

2.Loaded:准备呈现后;

3.Unloaded:释放元素后
表1-2 Windows类的生命周期事件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/GHVaHx8F.shtml

相关文章

WPF 常用控件

WPF六种常用控件:布局控件、内容控件、带标题内容控件、条目控件、带标题条目控件和特殊内容控件(如:TextBox,TextBlock,Image等)。 实例链接:WPF常用控件实例 Window(窗体) Winodw窗体派生自ContentControl,有一个Content属性,里…

什么是WPF,对WPF的认识

一,什么是WPF WPF(Windows Presentation Foundation)翻译为中文“Windows呈现基础” 是微软新发布的Vista操作系统的三个核心开发库之一,是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分…

关于VRRP

目录 HSRP的定义 小结: VRRP作用: VRRP的好处: 工作原理: VRRP与浮动路由的区别 怎么样让路由器成为主路由器呢? 项目实施 拓扑图 步骤 1、打开二层交换机 2、打开三层交换机 3、打开路由器 4、为两台pc机配置ip地址子网掩码和网关 5、测试连通性 总…

华为交换机RRPP单环配置

华为交换机RRPP单环配置 rrpp相关概念(取自华为官方文档) 控制VLAN(Control VLAN)和数据VLAN(Data VLAN) 控制VLAN是相对于数据VLAN来说的。在RRPP域中,控制VLAN只用来传递RRPP协议报文。与控…

VRRP(12)

VRRP VRRP的作用 提供了局域网上的设备备份机制。VRRP是一种容错协议,它保证当主机的下一跳路由器坏掉时,可以及时由另一台路由器来代替,从而保证通讯的连续性和可靠性。 VRRP工作时会在网络中加入一个含有虚拟IP和虚拟MAC地址的虚拟路由器…

RIP

路由信息协议 RIP(Routing Information Protocol) 是内部网关协议 IGP中最先得到广泛使用的协议。RIP 是一种分布式的基于距离向量的路由选择协议。 RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。 RIP是应用层协议。使用UDP数据报传送。…

RRPP 演示实例

RRPP 概念:快速环网保护协议RRPP(Rapid Ring Protection Protocol)是一个专门应用于以太网环的链路层协议。它在以太网环完整时能够防止数据环路引起的广播风暴,而当以太网环上一条链路断开时能迅速启用备份链路恢复环网上各个节点…

H3C交换机RRPP配置

配置Device A # 创建VLAN 2&#xff5e;30&#xff0c;将这些VLAN都映射到MSTI 1上&#xff0c;并激活MST域的配置。 <DeviceA> system-view[DeviceA] vlan 2 to 30Please wait… Done.[DeviceA] stp region-configuration[DeviceA-mst-region] instance 1 vlan 2 to 3…

H3C RRPP实验

实验拓扑 H3C RRPP实验 图 1-1 注&#xff1a;如无特别说明&#xff0c;描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备&#xff0c;R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备&#xff0c;以此类推&#xff1b;另外&#xff0c;同一网段中&#xff0c;IP …

RRPP 实验

实验拓扑 注&#xff1a;如无特别说明&#xff0c;描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备&#xff0c;R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备&#xff0c;以此类推&#xff1b;另外&#xff0c;同一网段中&#xff0c;IP 地址的主机位为其设备编…

VRRP——VRRP讲解

目录 VRRP作用 VRRP的基本概念 基本信息 优先级 主备关系 VRRP报文 VRRP定时器 VRRP状态 VRRP版本 VRRP基本工作原理 VRRP高级特性 VRRP作用 VRRP为虚拟路由冗余协议 将多个设备接口划分在一起&#xff0c;称为一个备份组&#xff08;有主备关系---优先级高的为主&am…

以太网环网的快速环保护协议:RRPP,配有专属案例,爽歪歪!

你好&#xff0c;这里是网络技术联盟站。 今天给大家带来RRPP协议的介绍以及实验配置&#xff0c;希望对大家有所帮助&#xff01; 文章目录 什么是RRPP协议RRPP协议的功能RRPP协议的优势RRPP配置案例背景介绍网络拓扑RRPP配置步骤步骤 1&#xff1a;启用RRPP协议步骤 2&#…

BS架构和CS架构的优缺点

1、CS、BS架构定义 CS(Client/Server):客户端----服务器结构。C/S结构在技术上很成熟,它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。因为客户端要负责绝大多数的业务逻辑和UI展示,又称为胖客户端。它充分利用两端硬件,将任…

BS架构说明以及网页组成

B/S架构 1.B/S框架&#xff0c;意思是前端&#xff08;Browser 浏览器&#xff0c;小程序、app、自己写的&#xff09;和服务器端&#xff08;Server&#xff09;组成的系统的框架结构 2.B/S框架&#xff0c;也可理解为web架构&#xff0c;包含前端、后端、数据库三大组成部分 …

B/S三层体系结构

为什么80%的码农都做不了架构师&#xff1f;>>> ASP.NET的三层结构因为每一层都可以在仅仅更改很少量的代码后&#xff0c;就能放到物理上不同的服务器上使用&#xff0c;因此结构灵活而且性能更佳。此外&#xff0c;每层做些什么其它层是完全看不到的&#xff0c;…

B/S结构和C/S结构

在系统开发的网络结构模式设计时&#xff0c;常常会考虑B/S结构还是C/S结构。生活中&#xff0c;类似于使用浏览器网页进行访问的&#xff0c;就是B/S结构&#xff0c;用户无需安装特定的APP。类似于微信、QQ、王者荣耀等等需要下载APP的&#xff0c;或者电脑中安装的微信、英雄…

B/S结构和C/S结构,以及区别和联系

B/S和C/S都是随着互联网的发展而出现的一种网络结构模式&#xff0c;而其用的非常广泛&#xff0c;在我们生活中都很常见。那它们到底是什么呢&#xff1f;接下来就详细的介绍一下B/S和C/S。 一、B/S结构 B是英文单词“Browser”的首字母&#xff0c;即浏览器的意思&#xff1…

BS架构及其运行原理

一. B/S的概念 B/S&#xff08;Brower/Server,浏览器/服务器&#xff09;模式又称B/S结构&#xff0c;是Web兴起后的一种网络结构模式。Web浏览器是客户端最主要的应用软件。 这种模式统一了客户端&#xff0c;将系统功能实现的核心部分集中到服务器上&#xff0c;简化了系统的…

什么是B/S架构?

目录 一.什么是B/S架构&#xff1f; 二.B/S架构与C/S架构有什么区别&#xff1f; 三.B/S架构的优缺点 四.B/S架构的几种形式 1&#xff1a;客户端-服务器-数据库 2&#xff1a;客户端&#xff0d;web服务器&#xff0d;应用服务器&#xff0d;数据库 3&#xff1a;客户端…