XAML

XAML

XAML(Extensible Application Markup Language)。他是基于XML的用来创建和初始化具有层次关系的.Net对象的简单语言。尽管它原来被发明是为了WPF,但是现在可以被用来创建任意的对象树。
现在XAML被用来创建WPF,Sliverlight的用户界面,定义WF中的工作流和用于XPS标准中的电子纸。。
在WPF所有的类都有无参构造函数,并过度使用属性。这样做是为了更加像XAML

XAML优势

你用XAML可以做的,代码也可以做。XAML只是另一种创建和初始化对象的方式。你可以不使用XAML地使用WPF,这都随你。

  • XAML代码更短和更易读
  • 设计师代码和逻辑的分离
  • XAML和UI逻辑的分离允许更加清晰的分离设计师和开发者的角色

作为元素的属性

属性通常被写作XML的内联。但是有时候你想放一个更复杂的对象作为其内容,如一个有着它自己属性的图像或者整个Grid面板?可以用属性元素语法,它允许我们提取这个属性作为它自己的孩子元素。

<Button>
    <Button.Content>
        <Image Source="Ok.png" Width="50" Height="50">
    </Button.Content>
</Button>

隐式类型转换

WPF中非常强有力的部分是隐式类型转换。他们沉默地在后台做工作。当你定义了一个BorderBrush,单词Blue仅仅是个字符串。幕后BrushConverter创建了一个System.Windows.Media.Brushes.Blue作为它的输出。WPF包含了大量的转换类,你也可以创建你自己的转换类。

<Border BorderBrush="Blue" BorderThickness="0,10"/>

扩展标记

在XAML中,扩展标记是属性值的动态占位符。他们解析运行时的属性值。扩展标记被一对花括号包围。WPF有许多内嵌的扩展标记,当然你可以可以写你自己的,只要派生自MarkupExtension。下面是内嵌的扩展标记。

  • Binding 将两个属性绑定在一起
  • StaticResource 一次性查找资源条目
  • DynamicResource 自动更新地查看资源条目
  • TemplateBinding 绑定控件模板的属性到另一个控件的依赖属性
  • x:Static 解析静态属性的值
  • x:Null 返回空

大括号中的第一个标识符是扩展标记的名字。所有的标识符用属性=值形式。下面的例子展示了一个标签的内容被绑定到文本框的文本上。当你输入一个文本到文本框中,这个文本属性改变并且绑定标记扩展自动地更新标签的内容。

<TextBox x:Name="textBox">
<Lable Content="{Binding Text, ElementName=textBox}">

命名空间

在每个XAML文件的开始你需要包含两个命名控件。
第一个是http://schemas.microsoft.com/winfx/2006/xaml/presentation 它映射了所有的在System.Windows.Controls中的WPF控件。
第二个是http://schemas.microsoft.com/winfx/2006/xaml 它映射了System.Windows.Markup,它定了一个XAML关键字。
XML命名空间和CLR命名空间的映射由程序集级别的XmlnsDefinition属性完成。
在XML中你也可以直接地包含一个CLR命名空间,通过使用clr-namespace前缀。

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Window>
posted @ 2023-07-14 17:55  Juston007  阅读(99)  评论(0)    收藏  举报