WPF初学者指南1-Layout

  WPF大家可能都不会陌生,出来两年了,可是在国内用的人还是比较少的,不过最近MS正在推出windows7它的界面很华丽,主要就是有wpf这个技术来展现。据说在美国很多以前使用flash转播的电视MS都在争取他们开始使用wpf。

  另外大家都在silverlight,其实它也是WPF技术的一部分吧。我之前看了Barber的一系列为初学者写的文章,然后试着去体验了一下,感觉还不错。

   这里先给WPF的初学者介绍一下WPF的Layout,如果你觉得这个对你理解和学习wpf有帮助那么就给我个留言,让我知道这东东对你有帮助,这样我会更加有动力去写其他部分。呵呵。

1.Layout:

  Layout属性是WPF中最重要的部分之一。下面这几部分我就会给大家介绍WPF新的layout有哪些属性。

2.Layout的重要性:

  我觉得layout其实就是个基本的内嵌空白模块当你编写任何WPF程序时,不管你的程序是个Xbap或者是应用程序。使用layout可以让开发者或者是设计人员能够建立好WPF程序复杂的页面显示布局。如果没有layout属性,可以说我们无法实现任何事情。如果你想知道如何使用新的layout属性,那么就继续往下看吧。

  如果你是个做web网页开发的,那么可能下面这些东东对你来说都是一些新东西,但是如果你是做winform开发的,那么你以前肯定碰到过Panel类,可能你还使用过一些Panel的子类,比如FlowLayoutPanel和TableLayoutPanel。你应该也听说过windforms的属性比如Anchor和Dock。是不是很亲切,呵呵,这些东西在WPF中还是很有用的。不过你还有很多新的东西需要学习。对于web开发人员来说有个好消息是XAML文件的语法和XHTML的语法很相似,所以你不会有什么麻烦来创建一些UI界面。

  微软在WPF中增加了一些新的Layout控制来让开发人员使用,很多东西我觉得对于大多数人来说都是新的名词。这篇文章我们主要是关注一下这些新的layout控制,如果你觉得这些东西不够你用,你可以自己去开发一个自己的layout控制。

  在这篇文章中我们将会关注以下几个属性:

  • Canvas
  • StackPanel
  • WrapPanel
  • DockPanel
  • Grid

   作为初学者,这篇文章当然只是介绍这些layout控件的基本使用,你可以google或者百度一下找到很多这些控件很多其它高级的使用方法。毕竟此文只是对于初学者。

首先我们来看如何使用Canvas.

3.Canvas:

    Canvas是用来控制页面边缘空白的。它是很简单的几个layout控件之一。基本上它就是一个X/Y坐标来设定位置的容器。如果它本身包含子控件,那么子控件必须有以下四个属性来显示在父控件中:

  •    Canvas.Left
  •    Canvas.Right
  •    Canvas.Top
  •    Canvas.Bottom

使用这四个属性就可以定位一个控件在父控件Canvas中的位置。这些属性可能让你觉得有点古怪,在.net2.0中根本就是没有这些的。

这里就有个问题,如果我们通过X/Y坐标来确定一个子控件的位置,那么我们如何阻止两个重叠的子控件重叠,如果让塔门区分出来哪个应该显示在上层,哪个在下层级。这些都可以通过一个叫做Canvas.ZIndex只来设定,如果这个值没有设定那么Canvas会通过谁先被添加到Canvas中来确定显示顺序。

下面我们来看个例子。下面这个图片显示了一个Canvas包含两个子控件,它们被存放在CanvasDEMO.xaml文件中。

 

下面是它的XAML文件代码:

 在winform中用C#代码来实现这个功能的代码:

 

 4.StackPanel:

 StackPanel控件也很容易使用。它主要是通过一个叫做Orientation的属性来设置内容是水平显示还是垂直显示。下面我们看个例子吧,是一个StackPanel包含两个button控件,这个文件叫做StackPanelDEMO.xaml。图片如下:

 

下面是在XAML中的代码:

使用C#来实现这个功能的代码:

  

 

5.WrapPanel:

这个控件也很好使用,我们就直接给出个例子来看它的效果吧:

它的代码我保存在WrapPanelDEMO.xaml 中:

 那么用C#来实现这个功能如何做到:

 6.DockPanel:

DockPanel控件是layout控件中最有用的之一。我们可能会把它作为每个新窗体的最基本的layout控件。我们试着去在一个form中使用两个DockPanel来显示,一个停靠在上边,一个停靠在下边。DockPanel有很多属性可以设置,这里只是使用了它的基本属性。

一个比较重要的我们下面就会用的属性是DockPanel.Dock。它的值可以设置为Top,Bottom,Right,Left,来确定这个panel是停靠在父容器的什么位置。下面我们看个例子吧:

 

xaml文件代码:

在C#中实现的代码:

 

7.Grid:

Gird在wpf的layout中的地位至关重要,它有点像html中的table控件,可以把整个form分割成很多行很多列的一个类似于表格的东西,它的四个重要属性:

  • Grid.Column
  • Grid.Row
  • Grid.ColumnSpan
  • Grid.RowSpan

前面两个属性是行列,后面是说明一个空间占据几个行几个列,下面的例子比较容易说明这个问题:

它的代码如下:

C#中实现这个功能:

上面这几个layout的控件学会了,你就可以试着把他们组合到一块设计自己的一个wpf程序,我再给大家个组合到一块的例子:

XAMl文件:

 

 

是不是挺酷的。呵呵。我也写的手都有点抖了。后续会继续看barber的文章然后给大家总结出来一些资料。可能你看完这个文章对xaml很想深入了解,下一篇就会介绍xaml和它后面的代码文件C#或VB的关系,以及如何很好的使用它。

 

 

 

 

 

  

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值