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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/dingli/p/1884578.html