WPF 入门教程(一)

本文是WPF入门教程的第一部分,主要介绍了WPF中的布局规则,强调了避免硬编码尺寸和使用容器控件的重要性,如Grid、StackPanel和UniformGrid。此外,还详细讲解了数据绑定的概念,包括OneWay、TwoWay等绑定方向,以及UpdateSourceTrigger属性的使用。

WPF 入门教程(一)

1、布局规则

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

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

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

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

2、容器控件

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

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

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

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

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

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

      示例程序图0所示:

         示例代码和效果图   

        

     Grid Split

                                      

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

              实现代码:

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

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

3Binding

    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失败的调试信息。

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

4Binding 详解

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

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

 

编辑中。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值