WPF教程(六) XAML基础

来源:互联网 发布:mac无法安装pkg 编辑:程序博客网 时间:2024/06/05 18:19

在前面的章节,我们讨论了XAML是什么以及用它来做什么,那么如何用XAML来创建控件呢?接下来的例子,我们将会看到,用XAML创建一个控件,就和写它的名字一样简单,当然了,这个名字是用尖括号括起来的。譬如,按钮看起来是这样的:

<Button>
XAML标签通过编写结束标签或者在开始标签之后加一个斜杠来结束:

<Button></Button>
或者

<Button />

大部分控件允许你在开始标签结束标签之间放置控件所需的内容,譬如,按钮控件允许你在开始标签和结束标签之间指定要显示的内容:

<Button>A Button</Button>

HTML是不区分大小写的,而XAML区分大小写,因为在.NET框架中,控件名字对应了一种类型。属性名称也一样,对应于控件的属性。下面是一个按钮,我们通过添加属性为其定义了两个特性:

<Button FontWeight="Bold" Content="A Button" />
我们先把字体属性设置成了粗体,然后设置了内容属性,这个就跟在开始标签和结束标签之间编写内容一样。但是,所有属性也可以像这样定义,它们以主控件的子标签的形式,中间用点隔开:

<Button>    <Button.FontWeight>Bold</Button.FontWeight>    <Button.Content>A button</Button.Content></Button>
结果跟上面的代码是一样的,都是只涉及语法。其实,很多控件的内容里允许放置除了文本之外的东西,如其他控件。下面的例子展示了在一个按钮里面显示不同颜色的文字,它在按钮的内容里用了一些文本框控件。:

<Button>    <Button.FontWeight>Bold</Button.FontWeight>    <Button.Content>        <WrapPanel>            <TextBlock Foreground="Blue">Multi</TextBlock>            <TextBlock Foreground="Red">Color</TextBlock>            <TextBlock>Button</TextBlock>        </WrapPanel>    </Button.Content></Button>

内容属性只能放一个子元素,所以我们使用了一个WrapPanel控件来存放不同颜色的文本块。容器(Panel,如WrapPanel),在WPF里面扮演了一个非常重要的角色,我们将在以后详细讲述它的细节。现在我们只要知道它是存放其他控件的容易就行了。

下面的标记更加精准的达成了和上面一样的效果,这是另外一种表述:

<Button FontWeight="Bold">    <WrapPanel>        <TextBlock Foreground="Blue">Multi</TextBlock>        <TextBlock Foreground="Red">Color</TextBlock>        <TextBlock>Button</TextBlock>    </WrapPanel></Button>


代码 vs XAML

上面的例子展示了XAML非常容易编写,但是有太多的方式可以去实现同一个目的。如果你还在为上面的例子用了那么多标记,只实现了一个带不同颜色文字的按钮而不爽的,那么来比较一下C#中的实现方法:

Button btn = new Button();btn.FontWeight = FontWeights.Bold;WrapPanel pnl = new WrapPanel();TextBlock txt = new TextBlock();txt.Text = "Multi";txt.Foreground = Brushes.Blue;pnl.Children.Add(txt);txt = new TextBlock();txt.Text = "Color";txt.Foreground = Brushes.Red;pnl.Children.Add(txt);txt = new TextBlock();txt.Text = "Button";pnl.Children.Add(txt);btn.Content = pnl;pnlMain.Children.Add(btn);
当然上面的代码还可以写得更精简,还可以使用语法糖。然而结局对我来说还是一样:使用XAML描述界面更精简。





0 0
原创粉丝点击