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入门教程的第一部分,主要介绍了WPF中的布局规则,强调了避免硬编码尺寸和使用容器控件的重要性,如Grid、StackPanel和UniformGrid。此外,还详细讲解了数据绑定的概念,包括OneWay、TwoWay等绑定方向,以及UpdateSourceTrigger属性的使用。
&spm=1001.2101.3001.5002&articleId=8563810&d=1&t=3&u=e07704ed727f4bf287b062baf2919892)
8935

被折叠的 条评论
为什么被折叠?



