WPF基础学习笔记整理 (二) XAML
基础知识:
- XAML:Extensible Application Markup Language, zammel;
- 用于实例化.NET对象的标记语言;
- XMAL使用树形逻辑结构描述UI;
- BAML:Binary Application Markup Language,即XMAL的二进制表示,VS会在编译WPF应用程序时,将所有XAML转换为BAML,且BAML最终会作为资源被嵌入到DLL或EXE程序集中;
- BAML是标记化的,故相对于XAML较小;
- WPF应用程序三个顶级元素:Window、Page和Application;.
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- WPF的核心命名空间,包含了所有WPF类,包括构建用户界面的控件;
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- XAML命名空间,包含各种XAML使用特性,这些特性可以影响文档的解释方式;
- 上边两个命名空间是通过使用URI(Uniform Resource Identifier)格式的命名空间;
- 1、schemas.com域归Microsoft拥有,只有Microsoft会使用它,从而防止了其它组织的使用;
- 2、XAML中使用的XML命名空间和.NET命名空间不是一一对应的,它是一个多个命名空间的集合,使用URI可以将它们组合到一个XML命名空间中,防止了多个命名空间引起的使用混乱;
- Window类中的InitializeComponent()方法的所有工作就是调用System.Windows.Application类的LoadComponent()方法,从程序集中提取BAML,构建用户界面(创建所有控件对象+设置其属性+关联所有事件处理程序);
- 简单属性通过TypeConverter执行字符串值和非字符串属性的关联;
- 复杂属性则通过属性元素语法Property-Element Syntax实现上述功能;
- 标记扩展的原因:是有些情况下,不可能硬编码属性值;
- WPF最常用的标记扩展是支持资源引用的标记扩展和支持数据绑定的标记扩展,格式:{标记扩展类 参数};
- 所有标记扩展都由继承自System.Windows.Markup.MarkupExtension基类的类实现;
- 附加属性是可作用于多个控件但在另一个类中定义的属性(WPF中,一般用于控件的布局);
- 附加属性不是真正的属性,实际上它会被转换为方法调用(DefiningType.SetPropertyName(被修改的对象, 指定的属性值)),格式:定义类型.属性;
- XAML文件是一棵嵌套的元素树;规则:
- 1、如果父元素实现了IList接口,解析器就调用IList.Add()方法,并且为该方法传入子元素作为参数;1、如果父元素实现了IList接口,解析器就调用IList.Add()方法,并且为该方法传入子元素作为参数;
- 2、如果父元素实现了IDictionary接口,解析器就调用IDictionary.Add()方法,并且为该方法传入子元素作为参数。当使用字典集合时,必须设置x:Key特性以便为每个记录指定键名;
- 3、如果父元素使用ContentProperty特性进行修饰,解释器就使用子元素设置对应的属性;
- 特性也可关联事件处理程序,语法为:事件名=“事件处理程序方法名”;
- 使用特性为同一元素设置属性和关联事件处理程序,WPF会首先设置Name属性,然后关联任意事件处理程序,最后设置其它属性。故,在第一次设置属性时,所有对属性变化做出响应的事件处理程序都会触发;
- WPF中使用其他命名空间类型的语法:xmlns:Prefix="clr-namespace:Namespace;assembly=AssemblyName"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:MyNamespace"
WPF基础学习笔记整理 (二) XAML的更多相关文章
- WPF基础学习笔记整理 (九) 资源
基础知识: WPF的资源是一种保管一系列有用对象的简单方法,方便于重用. WPF UI元素的Resources属性,都是继承自FrameworkElement列,且其类型为ResourceDictio ...
- WPF基础学习笔记整理 (六) RoutedEvent路由事件
基础知识: 传统的事件模型中,会在消息触发时将消息通过事件传给事件的订阅者(显式的事件订阅),事件订阅者使用事件处理程序来做出响应.事件订阅者必须能够直接访问到事件的宿主(拥有者). 路由事件的事件的 ...
- WPF基础学习笔记整理 (八) 命令
基础知识: 命令是应用程序的任务,并跟踪任务是否能够被执行. 命令不包含执行应用程序任务的代码. 命令是比事件更高级的元素.默认的命令目标是当前获得焦点的元素. 良好的Win应用程序,应用程序逻辑不应 ...
- WPF基础学习笔记整理 (七) Binding绑定
基础知识: 数据绑定是一种关系,该关系告诉WPF从源对象提取一些信息,并用这些信息设置目标对象的属性:目标对象始终是依赖属性,而源对象则可以是任何内容. BindingOperations类,提供静态 ...
- WPF基础学习笔记整理 (五) DependencyObject & DependencyProperty
参考资料: 1.http://www.cnblogs.com/Zhouyongh/archive/2009/10/20/1586278.html 基础知识: DependencyObject & ...
- WPF基础学习笔记整理 (四) 布局
WPF使用的是容器(container)进行布局: WPF窗口(Window类型)只能包含单个元素,故为了放置多个元素并增强界面效果,引入了容器: WPF布局容器都派生自System.Windows. ...
- WPF基础学习笔记整理 (一)
基础知识: WPF:Windows Presentation Foundation,用于Windows的现代图形显示系统: WPF用于编写应用程序的表示层: 引入“内置硬件加速”和“分辨率无关”: S ...
- WPF基础学习笔记整理 (三) x命名空间
“x命名空间”中x是XAML的首字母,用来引导XAML编译器把XAML代码编译成CLR代码.下边的图片表格列举了该命名空间部分成员及其作用,更多请见URL:https://msdn.microsoft ...
- 两万字Vue.js基础学习笔记(二)
Vue.js学习笔记(二) 4.模块化开发 ES6模块化的导入和导出 我们使用export指令导出了模块对外提供的接口,下面我们就可以通过import命令来加载对应的这个模块了 首先,我们需要在HTM ...
随机推荐
- java maven项目找不到jconsole-1.8.0.jar和tools-1.8.0.jar包
今天在整合jar包时候,出现了 这是我导入的jar坐标 <dependency> <groupId>com.alibaba</groupId> <artifa ...
- unittest数据驱动
所谓的数据驱动就是将数据单独存放,在写方法将数据读取,然后将读取的数据放在testcase里面. 当然如果这种testcase都是一样的,只有需要的数据不一样,也可以将testcase写成一个方法,把 ...
- 集成学习ensemble
集成学习里面在不知道g的情况下边学习边融合有两大派:Bagging和Boosting,每一派都有其代表性算法,这里给出一个大纲. 先来说下Bagging和Boosting之间的相同点:都是不知道g,和 ...
- H2O.ai初步使用
1.官网下载最新稳定版,https://www.h2o.ai/download/ ,如果点击下载无反应,请使用ie浏览器 2.解压h2o-3.18.0.10.zip到目录h2o-3.18.0.10 3 ...
- python 文件写入与储存
python使用open()这个函数来打开文件返回对象: open 第二参数 "r" 以只读方式打开文件 "w" 以写入方法打开文件,会覆盖已储存的内容 &qu ...
- SQL 中【NULL】和【无】烦躁的问题
很烦躁,烦躁的很,总结一下. 先简单的说下: NULL : 不确定的东西 无 :没有东西 复杂的见下文....... 一 .null值 下面举个最简单的例子,平常工作当中肯定比这个sq ...
- Java HTTP通信--Get与POST请求
一.JDK自带的http通信机制--java.net.URL package com.wjy; import java.io.BufferedReader; import java.io.Buffer ...
- ELK学习笔记之Elasticsearch启动常见错误
问题出现的环境: OS版本:CentOS-7-x86_64-Minimal-1708 ES版本:elasticsearch-6.2.2 1. max file descriptors [4096] f ...
- Python3 itchat实现微信定时发送群消息
Python3 itchat实现微信定时发送群消息 一.简介 1,使用微信,定时往指定的微信群里发送指定信息. 2,需要发送的内容使用excel进行维护,指定要发送的微信群名.时间.内容. 二.py库 ...
- VM三种网络连接方式
bridge:这种方式最简单,直接将虚拟网卡桥接到一个物理网卡上面,和Linux下一个网卡 绑定两个不同地址类似,实际上是将网卡设置为混杂模式,从而达到侦听多个IP的能力. 在此种模式下,虚拟机内部的 ...