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的关系,以及如何很好的使用它。