WindowsPhone XAML语法详解
XAML 是一种声明性标记语言。XAML 简化了为.NET Framework 应用程序创建UI 的过程。您可以在声明性XAML 标记中创建可见的UI 元素,然后使用代码隐藏文件(通过分部类定义与标记相连接)将UI 定义与运行时逻辑相分离。XAML 直接以程序集中定义的一组特定后备类型表示对象的实例化。XAML 实现了一个工作流,通过此工作流,各方可以采用不同的工具来处理应用程序的UI 和逻辑。以文本表示时,XAML 文件是通常具有.xaml 扩展名的XML 文件。 可通过任何XML 编码对文件进行编码,但通常编码为UTF-8。
特点:
1. 具有.xaml 扩展名的XML 文件,格式和XML一样
2. 在XAML中定义的元素其实是程序集中定义的类型对象
3. 每一个WP7应用程序中的.xaml文件,都有一个与之对应的代码隐藏文件(XAML文件名+.cs)
XAML文件与代码隐藏文件
由于XAML文件只负责用于表现UI,而UI对应的控制逻辑通常是由与之对应的代码隐藏文件来负责的。在WP7应用程序中,每一个WP7应用程序中的.xaml文件,都有一个与之对应的代码隐藏文件(XAML文件名+.cs),例如:MainPage.xaml对应的代码隐藏文件名字为MainPage.xaml.cs。二者通过XAML文件根元素中x:Class前缀进行连接指定。当UI上的控件产生了事件之后,会通过x:Class前缀中指定的代码隐藏文件命名空间和类名,找到UI处理逻辑,从而进行事件处理(那当然,还要在控件的事件属性中指定事件处理方法例如下面代码:
在根元素x:Class中指定了命名空间和类名为MyTes.MainPage,在Button元素中指定了按钮处理方法Btn_Click,当用户按下按钮时,自动回调代码隐藏文件MainPage.xaml.cs中的Btn_Click事件处理方法。
MainPage.xaml文件
[html] view plaincopy
<phone:PhoneApplicationPage
x:Class="MyTest.MainPage"
...>
<Button Click="Btn_Click" />
</phone:PhoneApplicationPage>
MainPage.xaml.cs代码隐藏文件
[csharp] view plaincopy
namespace MyTest
{
public partial class MainPage : PhoneApplicationPage
{
private void Btn_Click (object sender, RoutedEventArgs e)
{
....
}
}
属性语法
对象的属性通常可表示为对象元素的特性。属性语法命名在属性语法中设置的属性,后跟赋值运算符(=)。属性的值始终以包含在引号中的字符串的形式进行指定。
属性语法是最简单有效的属性设置语法,并且对于曾使用过标记语言的开发人员而言在使用中是最直观的语法。例如,以下标记将创建一个具有红色文本和蓝色背景的按钮,还将创建指定为Content 的显示文本。
[html] view plaincopy
<Button Background="Blue" Foreground="Red" Content="This is a button"/>
属性对象元素语法
对于对象元素的某些属性,属性语法是不可能实现的,因为无法在属性语法的引号和字符串限制内充分地表达提供属性值所必需的对象或信息。对于这些情况,可以使用另一个语法,即属性对象元素语法。
属性元素对象开始标记的语法为<类型名称.属性名称>。 通常,该标记的内容是类型的一个对象元素,属性会将该元素作为其值。指定内容之后,必须用一个结束标记结束属性元素。结束标记的语法为</类型名称.属性名称>。
[html] view plaincopy
<Button>
<Button.Background>
<SolidColorBrush Color="Blue"/>
</Button.Background>
<Button.Foreground>
<SolidColorBrush Color="Red"/>
</Button.Foreground>
<Button.Content>
This is a button
</Button.Content>
</Button>
内容属性
如果一个类的内容属性为该类中的唯一一个内容属性,对象元素的子元素可以用于设置该内容属性的值。换言之,仅对内容属性而言,您可以在XAML 标记中设置该属性时省略属性元素,并在标记中生成更直观的父级/子级形式。
[html] view plaincopy
<Border>
<TextBox Width="300"/>
</Border>
当然,你也可以显示的的标明,设置了元素的内容属性为子元素。
[html] view plaincopy
<Border>
<Border.Child>
<TextBox Width="300"/>
</Border.Child>
</Border>
集合语法
XAML 语言包含一些优化,可以生成可读性更好的标记。其中的一项优化是:如果某个特定属性采用集合类型,则您在标记中声明为该属性的值内的子元素的项将成为集合的一部分。在这种情况下,子对象元素的集合是设置为集合属性的值。
下面的示例演示为GradientStops 属性设置值的集合语法:
[html] view plaincopy
<LinearGradientBrush>
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.0" Color="Red" />
<GradientStop Offset="1.0" Color="Blue" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
XAML 根元素和XAML 命名空间
元素名 |
释义 |
<phone:PhoneApplicationPage |
根元素的开始对象元素 |
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
默认 XAML 命名空间 |
访问www.zzzyk.com 试试 CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络, |