在上面章节中,我们描述了什么是XAML,并且说明了他可以用来做什么,但是怎么样使用XAML来创建一个控件呢?下面的例子将来说明,其实在XAML创建一个控件非常容易,是由尖括号包围,比如,一个按钮是这样创建的。
<Button>
但是XAML必须是有结尾标签的,你可以使用结尾标签或者使用/来做为结束标签,比如:
<Button></Button>
或者
<Button />很对的标签都允许你在开始标签和结尾标签之间写一些内容的,举个例子,按钮标签允许你在标签中间加上你要显示的文字,
<Button>A button</Button>
HTML是不区分大小写的,但是XAML因为一个标签名字相当于在.NET Framword里面的一个类,同样哪些属性名称也就相当于一个控件的属性,下面的Button按钮我们加了一些属性。
<Button FontWeight="Bold" Content="A button" />我们设置粗体,这样会给我们现实粗体文字,我们要设置内容属性,就在按钮的开始和结束标签之间写上我们要显示的文字。但是一个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>
因为Content属性节点只能允许一个子节点,所以我们就使用WrapPanel来包含不同的文字控件,WrapPanel在WPF扮演了一个非常重要的角色,我们将会在后面的章节中详细讨论,现在只需要知道它可以包含多个容器就可以了。
希望上面的例子给你呈现的是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);
通过上面的代码我们可以看到使用C#代码相比XAML,做同样的效果,XAML会简洁很多。