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的更多相关文章

  1. WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)

    时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码)  已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...

  2. WPF学习05:2D绘图 使用Transform进行控件变形

    在WPF学习04:2D绘图 使用Shape绘基本图形中,我们了解了如何绘制基本的图形. 这一次,我们进一步,研究如何将图形变形. 例子 一个三角形,经Transform形成组合图形: XAML代码: ...

  3. WPF学习之资源-Resources

    WPF学习之资源-Resources WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些资源定义的优越性.比如通过Resour ...

  4. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

  5. WPF学习拾遗(二)TextBlock换行

    原文:WPF学习拾遗(二)TextBlock换行 下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧. 新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要 ...

  6. WPF学习(8)数据绑定

    说到数据绑定,其实这并不是一个新的玩意儿.了解asp.net的朋友都知道,在asp.net中已经用到了这个概念,例如Repeater等的数据绑定.那么,在WPF中的数据绑定相比较传统的asp.net中 ...

  7. WPF学习:3.Border & Brush

    上一章<WPF学习:2.Layout-Panels-Countainers>主要介绍了布局,容器和面板.这一章主要开始介绍Border(边界)和Brush(画刷). 代码地址:http:/ ...

  8. wpf学习

    http://www.jikexueyuan.com/course/1231_3.html?ss=1 WPF入门教程系列二——Application介绍 http://www.cnblogs.com/ ...

  9. WPF学习笔记-用Expression Design制作矢量图然后导出为XAML

    WPF学习笔记-用Expression Design制作矢量图然后导出为XAML 第一次用Windows live writer写东西,感觉不错,哈哈~~ 1.在白纸上完全凭感觉,想象来画图难度很大, ...

随机推荐

  1. linux(Redhat7)安装Apache

    1.下载apache安装包以及安装依赖的包(apr.apr-util.pcre)wget https://mirrors.cnnic.cn/apache/httpd/httpd-2.4.37.tar. ...

  2. JavaScript实现页面刷新滚动条位置不变(利用cookie)

    实验环境:vs2015 asp.net(C#) 主要原理: 1.在页面滚动时或点击按钮时将当前滚动条位置记录到cookie[pos], 2.页面刷新或重载时查询cookie[pos]中的值是否存在,若 ...

  3. Visualizing the Git data model

    I wrote a small tool git-graph.py over the weekend which can be used to generate the object graph of ...

  4. 【react】利用shouldComponentUpdate钩子函数优化react性能以及引入immutable库的必要性

    凡是参阅过react官方英文文档的童鞋大体上都能知道对于一个组件来说,其state的改变(调用this.setState()方法)以及从父组件接受的props发生变化时,会导致组件重渲染,正所谓&qu ...

  5. 大叔学ML第二:线性回归

    目录 基本形式 求解参数\(\vec\theta\) 梯度下降法 正规方程导法 调用函数库 基本形式 线性回归非常直观简洁,是一种常用的回归模型,大叔总结如下: 设有样本\(X\)形如: \[\beg ...

  6. vs2012升级vs2017后的一些坑

    异常信息:未能加载文件或程序集"System.Web.Helpers... 未能加载文件或程序集"System.Web.Helpers, Version=2.0.0.0, Cult ...

  7. SpringDataJPA

    看着自己弟弟在成都聚全家之力盘一套房, 看着自己二哥,在成都也为车贷房贷奔波劳累,身心俱惫, 生活不易啊,这个社会环境下,就像从数据库拿数据一样,只拿我们想要的,或许会活的滋润很多吧. 最近的这个项目 ...

  8. Spring依赖注入(DI)详解

    一.依赖简介 一个典型的企业应用程序不是由一个单一的对象组成(或Spring的说法中的bean).即使是最简单的应用程序也只有几个对象一起工作来呈现最终用户看作是一个连贯的应用程序.如何从定义许多独立 ...

  9. python写的计算器

    import tkinter #导入tkinter模块 root = tkinter.Tk()root.minsize(280,500)root.title('xx的计算器') #1.界面布局#显示面 ...

  10. Eclipse 中构建 Maven 项目的完整过程 - SpringBoot 项目

    进行以下步骤的前提是你已经安装好本地maven库和eclipse中的maven插件了(有的eclipse中已经集成了maven插件) 一.Maven项目的新建 1.鼠标右键---->New--- ...