XAML标记语言(WPF学习(一))

来源:转载


总说XAML

XAML是一种可扩展应用程序标记语言,是一种实例化.NET对象的类似XML的标记语言。
在XAML中的对象元素均一一对应到CLR中的类型或者结构。

<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> </Grid></Window>

xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”代表WPF的命名空间,也就是每一个XAML元素所对应的CLR类的命名空间。 xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”是XAML本身的命名空间。语法为 xmlns:x,x是命名前缀。
这2个是xaml文件中必须包含的命名空间。

XAML基础

命名空间

当引用了xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation后,编译器就会从这个命名空间下知道XAML文件与.NET哪些命名空间相关联。

  • System.Windows
  • System.Windows.Automation: WPF UI动画的支持
  • System.Windows.Controls: 创建控件的元素
  • 等等

xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”是XAML本身的命名空间,通常用x为前缀。x:Class是XAML的后置类。
其他以x为前缀的:
- x:Array 标记扩展
- x:Class 属性
- x:Key 属性
- x:Type 扩展标记
- 等等

可以看到XAML的命名空间是不会直接与特定的.NET的命名空间相关联的,而是指向了一个不可达的URI,主要是为了避免其他组织无意间创建了具有相同命名空间的其他基于xml的语言。schemas.microsoft.com属于微软,只有微软会将其用于xml的命名空间的名字。

XAML的属性语法和属性元素语法

对象元素语法

<Button Content="按钮" HorizontalAlignment="Left" Margin="203,108,0,0" VerticalAlignment="Top" Width="75"/>

比如这个,可以写成:

<Button HorizontalAlignment="Left" Margin="203,108,0,0" VerticalAlignment="Top" Width="75">按钮</Button>

属性语法

上面的 Width=”75”就是Button属性的语法,注意属性值全部用引号,即使是数字。

属性元素语法

这个其实是属性的另一种写法,通过“元素.属性名”可以设置复杂的属性。

<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Window.Background> <LinearGradientBrush> <LinearGradientBrush.GradientStops> <GradientStop Offset="0.00" Color="Violet"></GradientStop> <GradientStop Offset="0.50" Color="Green"></GradientStop> <GradientStop Offset="1.00" Color="Pink"></GradientStop> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </Window.Background> <Grid> </Grid></Window>

标记扩展特性

有时候在编码时不知道属性的值,可能要由程序运行时产生,可以利用标记扩展。

 <Button Content="查看信息" Foreground="{x:Static SystemColors.ActiveCaptionBrush}"></Button><!--属性元素语法的写法--> <Button Content="信息"> <Button.Foreground> <x:Static Member="SystemColors.ActiveCaptionBrush"> </x:Static> </Button.Foreground> </Button>

附加属性

附加属性是指定义在不同的类中的属性可以被应用到其他的控件。比如一个文本框控件的字体,当把这个控件放入一个容器中时,依赖于不同的容器,控件能进行一些在影响控件在容器中的特性的属性设置附加属性时wpf的核心元素之一,可以使得wpf应用程序具有很强的扩展性。比如对于容器控件,使用附加属性的特性,容器将不再关心放在其中的是什么控件,因为附加属性对于其中的任何控件都可以用。

<StackPanel TextBlock.FontSize="10"><!--使用TextBlock附加属性指定StackPanel控件中文本块的字体大小--></StackPanel>

特定的字符和空白

  • 小于<: &lt;
  • 大于>: &gt;
  • &符号: &amp;
  • 引号: &quot;

    注意:上面的分号都是半角状态下的。
    由于xml会将所有的空格变成一个空格,所以如何打多个空格呢?增加属性即可:

    <Button xml:space="perserve"></Button>



分享给朋友:
您可能感兴趣的文章:
随机阅读: