WPF教程(六) XAML基础
2016-09-22 21:46
246 查看
在前面的章节,我们讨论了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描述界面更精简。
<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描述界面更精简。
相关文章推荐
- XAML语法术语基础教程(1)
- XAML语法术语基础教程(3)
- WPF入门教程系列一——基础
- WPF教程(七)XAML中的事件
- WPF教程(五) XAML是什么?
- WPF基础教程之布局系统
- Xamarin XAML语言教程基础语法篇大学霸
- C# WPF 基础教程
- WPF InkCanvas 基础使用教程
- WPF教程(十)使用App.xaml
- [WPF基础入门][2]__XAML
- WPF自学教程系列2:如何在xaml文件添加引用?
- WPF基础之XAML
- 【WPF系列】基础学习-XAML
- WPF系列(1)WPF和XAML基础
- XAML语法术语基础教程(2)
- WP7 WP8 windows8 教程 公共基础篇 一 XAML基础
- wpf快速学习笔记一 xaml基础知识
- WPF入门教程系列一——基础
- WPF教程一:基础