WPF 入门教程(一)

1、布局规则

1、WPF 窗体中,一个窗体只能持有一个空间,当需要展示多个控件时,则需要首先设置一个容器控件(Container)。控件的布局有容器来决定。

2、控件应避免明确的定义具体的尺寸,因为显示器分辨率及windows窗体的大小都有可能随时改变。如果明确的定义尺寸,当窗体变动后就会出现大面积的空白或是缺失。  但为了控件功能及效果的展示,应该限定一个可接受的最大及最小尺寸。通过MinWidth, MinHeight, MaxWidth, MaxHeight属性可以实现这一点。

3、不要将界面元素位置设置成与屏幕坐标相关.因为显示器分辨率比较多样化。

4、容器嵌套使用,因为不同的容器,表现效果不同,必要时应结合使用。

2、容器控件

1、Grid 网格:表格形式组织空间的布局方式,与JAVA  AWT 中的Grid Layout类似,但区别在于:

① WPF中的Grid的每一个单元格中可以放置多个控件,但控件可能会层叠在一起。

② WPF中的Grid 支持单元格的合并,类似于HTML 中的table td中的rowspan和col pan

③ Grid中的行和列可以自定义高度和宽度。

1)   Height =”60”;不加“星号”表示固定高度。

2) Height=”60*” 加“星号”表示加权的高度 ,在调整窗体大小时,此高度和宽度会按照窗体大小改变的比例进行缩放。

示例程序图0所示:

Grid Split

Button A 和Button B、Button C 组成的整体,可以左右拖动的个,也可以上下拖动,调整宽度和高度。

实现代码:

     UniformGrid:简单的网格布局,各单元格的大小完全相同。单元格的数量取决于放入空间的数量,且单元格一定是行数和列数相同的,即:1*1,2*2,3*3,4*4……的单元格分布。   2、WrapPanel :将控件按照行或列的顺序罗列,当长度或宽度不够时,就会自动调整换行或换列。

3、StackPanel,将控件按照行或列来顺序排列不会换行。

3、Binding

1) Binding可以通过XAML语句实现界面与数据(可以是界面元素或后台对象)的耦合(也可以通过代码来实现)。

这一实现主要是依靠WPF的另一个特性Dependency Property来实现的。如图1所示:

图1

2) Binding可以实现制定方向的绑定,方向有三种,OneWay, TwoWay, OneWaytoSource,其形象的表示如下图2所示:

图2

3) 可配置触发器,这一特性用来解释,界面与数据的Binding是什么时候发生的,可以通过UpdateSourceTrigger属性实现,存在如下几种值

LostFocus :当控件失去焦点时触发,前面例子里

TextBox.Text默认就是这种形式的

PropertyChanged:当属性改变时触发

Explicit:这个就可以看作是需要显示调用了,需要主动取调用相应的UpdateSource方法才可以触发

用法可以像这样“{Binding FirstName,UpdateSourceTrigger=PropertyChanged }”

4) 不抛出异常,这一点对于开发及测试人员来说可能并不怎么好。

当一个数据Binding失败是,程序运行是不受影响的,只是相应的属性值为空了,对于开发人员来讲只能通过VS Debug时的输出窗口看到Binding失败的调试信息。

而对于测试人员来说那就只能是靠肉眼了。

4、Binding 详解

1、典型的Binding具有四个重要组成部分:Binding目标对象(binding target object)、目标对象属性(target property)、Binding数据源(binding source)、Path(用于指明要从数据源中取得的值,就是我们通常写的属性名称)。

2、同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProperty)只能拥有一个binding。当多次在同一个对象上设置Binding时,其实并不会增加多余的binding,而是将原来的binding替换掉了。

编辑中。。。。。

WPF 入门教程(一)相关推荐

  1. WPF入门教程-转载

    最近为了做炫酷的UI,了解了WPF,之前一直是使用winform的,界面也是古老的不行. 在园里找到了一个大佬以前写的教程,备注一下.按照系列教程走下来,可以直接上手了. 备忘传送门>>& ...

  2. WPF入门教程(七)---依赖属性(3)(转)

    WPF入门教程(七)---依赖属性(3) 2018年08月24日 08:33:43 weixin_38029882 阅读数:50 四. 只读依赖属性 在以前在对于非WPF的功能来说,对于类的属性的封装 ...

  3. WPF入门教程系列三——Application介绍(续)

    接上文WPF入门教程系列二--Application介绍,我们继续来学习Application 三.WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序 ...

  4. WPF入门教程系列四——Dispatcher介绍

    WPF入门教程系列四--Dispatcher介绍 一.Dispatcher介绍 微软在WPF引入了Dispatcher,那么这个Dispatcher的主要作用是什么呢? 不管是WinForm应用程序还 ...

  5. WPF入门教程教学(转载)

    WPF入门教程(1)-基础 https://blog.csdn.net/weixin_38029882/article/details/81867294 WPF入门教程(2)-基础篇 https:// ...

  6. WPF入门教程(八)--依赖属性(4)(转)

    WPF入门教程(八)--依赖属性(4) 2018年08月27日 11:35:55 weixin_38029882 阅读数:71 我们通过下面的这幅图,简单介绍一下WPF属性系统对依赖属性操作的基本步骤 ...

  7. WPF入门教程系列(二) 深入剖析WPF Binding的使用方法

    同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProperty)只能拥有一个binding. 这一点可以通过设置bindi ...

  8. WPF入门教程系列(1)----基础

    一.前言 最近找了一个实习,需要学习WPF,由于之前对这门语言没有任何了解,所以就网上找大牛的博客作为入门基础,为了让自己更加熟悉,我选择了自己边学习边写博客,为了自己同时也为了方便以后他人的学习. ...

  9. WPF入门教程系列(一) 创建你的第一个WPF项目

    WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知识(或者其他.NET支持的语言):这个是当然的了,虽 ...

最新文章

  1. AI领域为何缺乏突破?前Quora工程VP:Hinton没有说到点子上
  2. android 盒子 airplay,iOS Airplay--Airtunes音乐播放在Android盒子和手机上的实现 (第一篇)...
  3. 利用FS寄存器获取KERNEL32.DLL基址算法的证明
  4. 【Linux】一步一步学Linux——group文件详解(108)
  5. java flash 压缩_Java和flash通信中数据的zlib压缩与解压缩
  6. foobar2000 配置
  7. 使用ELK在DC / OS中进行日志管理
  8. 极客大学产品经理训练营 认识产品经理 作业1
  9. r 语言初学者指南_阻止自然语言处理的初学者指南
  10. Cannot create file C:\Users\Administrator\AppData\Local\Temp\EditorLineEnds.ttr
  11. 机器学习方面的参考论文
  12. pp什么意思_在网络用语中PP是什么意思?
  13. 计算机考研院校难度排行榜
  14. 如何使用Sketch绘制半个圆角矩形
  15. 【MIS你了解多少】你现在遇到的问题都是宝贵的财富
  16. Java编程:颜色色带图片的生成
  17. 没有50W彩礼 女友被强行拽走。Python分析全国彩礼情况,心凉了。
  18. 计算机信息处理员证书可以在东莞入户,东莞入户办理:人才入户东莞有哪些职称考?可靠吗?...
  19. 跨平台的UML工具——Jude(astah)
  20. OSChina 周日乱弹 ——阿拉蕾:你为什么那么爱我

热门文章

  1. 适合普通人的108个短视频项目:不用出镜也能赚钱的手机摄影玩法(3)
  2. 美国达高特DAKOTA超声波测厚仪检测仪维修
  3. java常量final是什么_java:变量,常量和final关键字--基础篇
  4. 我的电脑被谁远程登陆过?怎么查看电脑远程登陆日志?
  5. WinUsb_ReadPipe和WinUsb_WritePipe函数功能理解
  6. vue 路由二级跳转三级路由,路径变化页面没变
  7. 解决Win7缺失MSVCR120.DLL问题
  8. EXCEL之工资表转工资条
  9. 用python画玫瑰花
  10. idea自动去除导入但未使用的包