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

  • 相关阅读:
    C#后台去除字符串最后一个字符
    C#后台验证含0的正整数
    jQuery提交表单的几种方式
    C#后台获取当前时间并格式化
    获取EasyUI日期输入框的值
    jQuery将字符串转换为数字
    JQ和JS获取span标签的内容
    正则
    json 拖拽
    event事件对象
  • 原文地址:https://www.cnblogs.com/dingli/p/1884578.html
Copyright © 2011-2022 走看看