XAML的浅识。
上班的第一天,看了silverlight 2 & ASP.NET的高级编程中的第三章XAML。
大概对XAML有点了解。
以前学ASP.NET的时候讲到XML,它是一种可扩展标记语言(Extensible Markup Language),是一种简单的数据存储语言。我们知道二进制也可以传输和存储数据,而且占用空间比XML少。为什么还要用它呢?因为xml看着简单,易掌握。最重要的是它有着标准的格式。
XAML是可扩展应用程序标记语言(Extensible Application Markup Language),它类似于xml,在UI上比XML更简单。在WPF上体现的淋漓尽致。
在Silverlight中XAML只有一个根元素,那就是UserControl。如下:
<UserControl x:Class="Chapter03.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
</Grid></UserControl>
一、XAML的对象元素和属性元素:
当我们对TextBlock对象实例话时 <TextBlock Text="Hello World" Height=“20” Width=“100”/>
这简简单单在TextBlock中写个Text属性 Hello World,但它是怎么来的呢?
它相当于我们在C#代码中:
TextBlock tb=new TextBlock();
tb.Text="Hello World";
tb.Height=20;
tb.Width=100;
可见XAML比C#表示更清楚。
二、类型转换器我们经常这么写<TextBlock Foreground="Blue"/>,那么Blue这个字符串这么来的呢?这就要用到转换器,把它转换成我们所期望的System.Windows.Media.SoliderColorBrush类型。而这里的Blue、Red等属性就是默认提供的基本类型三、标记扩展上面我们用到的Foreground属性其实可以创建一个新的LinearGradientBrush实例。如:
<TextBlock>
<TextBlock.Foreground>
<LinearGradientBrush>
<GradientStop Color="Blue" >
</GradientStop>
</LinearGradientBrush>
</TextBlock.Foreground>
</TextBlock>
当我们有多个相同的<TextBlock />时,我们就可以用扩展标记来实现。我们一般把扩展标记的资源放到<Grid.Resources></Grid.Resources>中,如:
<Grid.Resources>
<LinearGradientBrush x:Key="MyRectangle">
<GradientStop Color="Blue"/>
</LinearGradientBrush>
</Grid.Resources>
这里我们要给他一个对象关键字MyRectangle,如果我们要用到上面的资源颜色时。我们只要这么写:
<TextBlock Foregrount="{StaticResource MyRectangle}"/>要写多个一样的TextBlock元素不是代码很简洁吗?
总结:下面我们把所有的知识综合在一起写个小实例:
1.打开Microsoft Visual Studio,并创建一个Chapter03的Silverlight项目。打开MainPage.xaml,添加一个TextBlock元素到页面。附上如下属性:
<Grid x:Name="LayoutRoot" Background="White">
<Grid.Resources>
<LinearGradientBrush x:Key="Mytext">
<GradientStop Color="Blue"/>
</LinearGradientBrush>
</Grid.Resources>
<TextBlock x:Name="textToDisplay" Foreground="{StaticResource Mytext}" Text="This is Our Text"/>
</Grid>
2.右击MainPage.xaml点在Expression Block中打开。利用Expression Block对刚才的MainPage.xaml页面进行美化。我们进入动画模式(Animation Workspace),默认是Design Workspace。
3.然后,我们在Objects and Timeline面板中添加一个Storyboard资源,于是我们选择TextBlock在选中IDE底部的Timeline中的第二个标记中的一个(这是一个时间线),我们把它拉到10.再到Properties面板改下TextBlock的文本大小为36;保存并关闭Expression Block ,再切换到vs中,我们运行它是没反应的。因为我们还没给这个动画一个写个启动命令。
4.在却换到隐藏代码里,写上 Storyblock1.Begin();按F5运行。
作者:dingli
出处:http://www.cnblogs.com/dingli/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。