Wpf学习20180605
Windows Presentation Foundation 窗口展示框架 WPF。
与winform界面程序比较,我认为最大的区别是‘与分辨率无关’这个特性。
传统winform程序在低分辨率的电脑上开发,在高分辨率的显示器(显示器的尺寸不变)中显示,会发现原有的程序尺寸缩小了。
就好比100米物理距离,有50个等距点,每个点是一个像素点,winform设定50个像素点描绘了100米物理距离。
当100米变为100个等距点后,winform依然按设定的50个像素点描绘100米,在高DPI(单位长度下的像素点,数字越高,单位面积支持的分片率越高)下实际只显示50米。
wpf不是使用像素点的多少来描绘长度,而是根据DPI的值计算需要的像素点进行描绘。
windows系统标准DPI为96,wpf会与程序运行DPI计算,获得描绘大小;当开发在DPI96运行在windowsDPI为120的环境,描绘值(像素点个数)=程序设定值*120/96,这样描绘的实际大小几乎没有差别。
----------------------------------------------------------------------------------------
wpf ,窗口展示框架
对界面使用XAML语言编程,对控件的高度自定义。
-------------------------------------------------------------------------------------------
XAML
声明式编程语言。
xmal元素和特性,对应.net的对象和属性。
-----------------------------------------------------
XAML命名空间
在许多 XAML 文件的根标记中的命名空间声明内,通常可看到两个 XML 命名空间声明。 第一个声明默认映射整个 WPF 客户端/框架 XAML 命名空间:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
第二个声明映射单独的 XAML 命名空间,(通常)将其映射到 x: 前缀。
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
这些声明之间的关系是 x: 前缀映射支持 XAML 语言定义中的内部函数,并且 WPF 是将 XAML 用作语言并为 XAML 定义对象词汇的一种实现。 因为 WPF 词汇用法远比 XAML 内部函数用法常见,因此默认映射 WPF 词汇。
此 SDK 内,映射 XAML 语言内部函数支持的 x: 前缀约定后跟项目模板、示例代码和语言功能文档。 XAML 命名空间定义许多常用功能,即使对于基本 WPF 应用程序而言,这些功能也是必需的。 例如,若要通过分部类将任何代码隐藏加入到 XAML 文件,必须将该类命名为相关 XAML 文件根元素中的 x:Class 属性。 或者,XAML 页面中定义的任何要作为键控资源访问的元素都应在当前元素上设置 x:Key 属性。
------------------------------------------------------------------------------------------------------------------------------------
属性元素
<Button Width="10" Height="10"/>
属性可以直接使用元素名=“值”的方式设置。也可以“属性元素”的方式设置值
<Button>
<Button.Width>
10
</Button.Width>
<Button.Height>
10
</Button.Height>
</Button>
第二种方式是为了对属性赋值复杂对象使用。
Button的显示内容可以是文本也可以是图形。
<Button>
<Button.Content>
<Rectangle Height="40" Width="40"/>
</Button.Content>
</Button>
---------------------------------------------------------------------------------------------------------------------
类型转换器
Xaml编辑中,对属性的赋值直接是字符串。<Button Width="10" Height="10" Background="YellowGreen"/>,系统如何转换适当的对象(值)给元素呢,Background是System.Windows.Meida.Brush类,怎么与YellowGreen“”字符串相关联。这里就需要类型转换器,把字符串转换会想要的数据类型。可以为自定义数据类型写类型转换器。
----------------------------------------------------------------------------------------------------------------------
标记扩展
对元素赋值更复杂的数据对象,
包括绑定扩展、动态资源扩展、多绑定扩展、静态资源扩展、系统类型扩展(sys:)、标记扩展(x:)等。
<Button Height="10" Conten="{Binding Paht=Height , RelativeSource={RelariveSource Self}}">
标记扩展的代码卸载{}中间;入过要把{}当做字符使用,Conten="{}{Binding Paht=Height , RelativeSource={RelariveSource Self}}",增加一对{},后面的{}当做字符处理。{Binding Paht=Height , RelativeSource={RelariveSource Self}}会当做按钮文本显示。
Wpf学习20180605的更多相关文章
- WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)
时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码) 已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...
- WPF学习05:2D绘图 使用Transform进行控件变形
在WPF学习04:2D绘图 使用Shape绘基本图形中,我们了解了如何绘制基本的图形. 这一次,我们进一步,研究如何将图形变形. 例子 一个三角形,经Transform形成组合图形: XAML代码: ...
- WPF学习之资源-Resources
WPF学习之资源-Resources WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些资源定义的优越性.比如通过Resour ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- WPF学习拾遗(二)TextBlock换行
原文:WPF学习拾遗(二)TextBlock换行 下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧. 新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要 ...
- WPF学习(8)数据绑定
说到数据绑定,其实这并不是一个新的玩意儿.了解asp.net的朋友都知道,在asp.net中已经用到了这个概念,例如Repeater等的数据绑定.那么,在WPF中的数据绑定相比较传统的asp.net中 ...
- WPF学习:3.Border & Brush
上一章<WPF学习:2.Layout-Panels-Countainers>主要介绍了布局,容器和面板.这一章主要开始介绍Border(边界)和Brush(画刷). 代码地址:http:/ ...
- wpf学习
http://www.jikexueyuan.com/course/1231_3.html?ss=1 WPF入门教程系列二——Application介绍 http://www.cnblogs.com/ ...
- WPF学习笔记-用Expression Design制作矢量图然后导出为XAML
WPF学习笔记-用Expression Design制作矢量图然后导出为XAML 第一次用Windows live writer写东西,感觉不错,哈哈~~ 1.在白纸上完全凭感觉,想象来画图难度很大, ...
随机推荐
- 求N!的位数
#include<iostream> #include <cstdio> #include <cmath> using namespace std; const d ...
- Delphi 中的 IfThen 函数
问题来源: http://www.cnblogs.com/del/archive/2008/11/14/1120015.html#1370413 StrUtils 单元和 Math 单元 分别有一个 ...
- PHP中 PCRE正则表达式模式修饰符“u” 的使用。
u (PCRE_UTF8) 此修正符打开一个与 perl 不兼容的附加功能. 模式字符串被认为是utf-8的. 这个修饰符 从 unix 版php 4.1.0 或更高,win32版 php 4.2.3 ...
- Maven package 报错解决记录以及编译scala的pom.xml
可以打包的pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...
- 数值计算 的bug:(理论)数学上等价,实际运行未必等价
1. 计算表达式的值(lambda 表达式) fun1 和 fun2 理论上是等价的:同样的输入情形下,两种输出结果不一致. # fun1 定义 fun1=lambda x:sqrt(x+1)-sqr ...
- [编译] 3、在Linux下搭建51单片机的开发烧写环境(makefile版)
星期二, 10. 七月 2018 01:01上午 - beautifulzzzz 一.SDCC(Small Device C Compiler)编译环境搭建 SDCC是一个小型设备的C语言编译器,该编 ...
- 背水一战 Windows 10 (119) - 后台任务: 后台下载任务(任务分组,组完成后触发后台任务)
[源码下载] 背水一战 Windows 10 (119) - 后台任务: 后台下载任务(任务分组,组完成后触发后台任务) 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 后台下 ...
- 用Ubuntu快速安装Jenkins
一.安装操作系统,安装前准备. 1.操作系统:Ubuntu 18.04 (大家都知道Ubuntu的特点,在线安装,方便很多) 2.apt源.apt源在官网上面分很多种,每个版本的源不一样,如果是其他版 ...
- Android 基本控件相关知识整理
Android应用开发的一项重要内容就是界面开发.对于用户来说,不管APP包含的逻辑多么复杂,功能多么强大,如果没有提供友好的图形交互界面,将很难吸引最终用户.作为一个程序员如何才能开发出友好的图形界 ...
- Android NDK学习(一):目录结构解析
我们配置好NDK环境后,基本可以看到其目录结构如下图: 下面我们来分析一下NDK根目录的结构: ndk-build:该Shell脚本是Android NDK构建系统的起始点,一般在项目中仅仅执行这一个 ...