XAML介绍
2010-11-03 15:43
225 查看
XAML是Extensible Application Markup Language(可扩展应用程序标记语言
)的缩写。它是一种简单的基于XML的用来创建.NET对象及其关系的语言。
虽然起初它是为WPF而设计的,用来创建对象树。但现在XAML不仅可用于创建WPF、Sliverlight用户界面,还可以申明Windows工作流
(WF)的流程或XPS的标准电子文件。
WPF中所有的类都有一个无参的构造函数和灵活的属性应用。其目的就是为了完全适应XML语言,像XAML中。
XAML的优势:
先说一点就是XAML中所能做的用代码同样可以实现。XAML仅仅是创建和初始化对象的另一种途径。你完全可以不使用XAML来实现WPF应用。在
XAML中申明还是在代码里编写完全取决于自己的想法。不过在XAML来申明用户界面有下列一些好处:
XAML代码比较简单、清晰、易读
分离的逻辑代码和设计代码
图形设计工具如expression blend都创建的是XAML文件
XAML中逻辑和设计的分离也表示了设计者和开发者角色的独立
XAML和代码:
用一个简单的在StackPanel中添加一个文本框和按钮来比较一下XAML和C#代码。
下面是在C# 代码中相同的效果:
你可以很清楚的看到XAML版的是很简洁,易读。这就是XAML表达式的强大之处。
元素即属性:
从XML语句
隐式类型转换:
WPF中一个
重要的概念就是隐式类型转换,在后台进行处理。如下面定义了一个BorderBrush,单词“Blue”仅仅是一个字符串。但隐式的
BrushConverter会将其转化为一个
。同样的
道理,thickness的值也会隐式的转换为
扩展[b]标签
:
[/b]
扩展标签是指在XAML中属性值的动态占位符。它解决了在运行时为属性赋值。扩展标签通常被包含在一组大括号,例如:Background=”
{StaticResource
NormalBackgroundBrush}"。WPF有一些内置的扩展标签,同时你可以从MarkupExtension衍生出自定义的。这些内置标
签有:
Binging --- 将两个属性的值绑定在一起
StaticResource --- 一次性匹配资源项
DynamicResource --- 动态的匹配资源项
TemplateBinding --- 将属性的模板控制绑定到属性所依赖的控件上
x:Static --- 设定静态属性的值
x:NULL --- 返回空(null)
在大括号内的第一个标记是扩展标签的名称。所有后面的都是以属性=值
形式的命名参数。下面的例子展示了一个Label,他的内容(Content)被绑定为一个文本框
(TestBox)的文本(Text)。当你在文本框中输入值的时候,他的文本属性会改变,绑定的扩展标签会自动的更形Label的内容。
名字空间:
每一个
XAML的开始,都必须包含两个名字空间,第一个是:
。
[/code]
)的缩写。它是一种简单的基于XML的用来创建.NET对象及其关系的语言。
虽然起初它是为WPF而设计的,用来创建对象树。但现在XAML不仅可用于创建WPF、Sliverlight用户界面,还可以申明Windows工作流
(WF)的流程或XPS的标准电子文件。
WPF中所有的类都有一个无参的构造函数和灵活的属性应用。其目的就是为了完全适应XML语言,像XAML中。
XAML的优势:
先说一点就是XAML中所能做的用代码同样可以实现。XAML仅仅是创建和初始化对象的另一种途径。你完全可以不使用XAML来实现WPF应用。在XAML中申明还是在代码里编写完全取决于自己的想法。不过在XAML来申明用户界面有下列一些好处:
XAML代码比较简单、清晰、易读
分离的逻辑代码和设计代码
图形设计工具如expression blend都创建的是XAML文件
XAML中逻辑和设计的分离也表示了设计者和开发者角色的独立
XAML和代码:
用一个简单的在StackPanel中添加一个文本框和按钮来比较一下XAML和C#代码。<StackPanel> <TextBlock Margin="20 ">Welcome to the World of XAML</TextBlock> <Button Margin="10 " HorizontalAlignment="Right ">OK</Button> </StackPanel>
下面是在C# 代码中相同的效果:
// Create the StackPanel StackPanel stackPanel = new StackPanel(); this .Content = stackPanel; // Create the TextBlock TextBlock textBlock = new TextBlock(); textBlock.Margin = new Thickness(10); textBlock.Text = "Welcome to the World of XAML "; stackPanel.Children.Add(textBlock); // Create the Button Button button = new Button(); button.Margin= new Thickness(20); button.Content = "OK "; stackPanel.Children.Add(button);
你可以很清楚的看到XAML版的是很简洁,易读。这就是XAML表达式的强大之处。
元素即属性:
从XML语句<Button Content="OK" />中可以看出属性一般是内嵌书写的。但是,如果我们想在属性中比如Content中放置一个更复杂的对象,像图像、甚至它本身或者一整张网格面板 该怎么做呢。我们可以用元素作属性的语法实现。它允许我们提取属性作为它自己的子元素。
<Button> <Button.Content> <Image Source="Images/OK.png " Width="50 " Height="50 " /> </Button.Content> </Button>
隐式类型转换:
WPF中一个
重要的概念就是隐式类型转换,在后台进行处理。如下面定义了一个BorderBrush,单词“Blue”仅仅是一个字符串。但隐式的
BrushConverter会将其转化为一个
System.Windows.Media.Brushes.Blue
。同样的
道理,thickness的值也会隐式的转换为
Thickness对象。WPf包含很多这样的内置的类型转换,同时也支持用户自定义的类型转 换。
<Border BorderBrush="Blue " BorderThickness="0,10 "> </Border>
扩展[b]标签
:
[/b]
扩展标签是指在XAML中属性值的动态占位符。它解决了在运行时为属性赋值。扩展标签通常被包含在一组大括号,例如:Background=”
{StaticResource
NormalBackgroundBrush}"。WPF有一些内置的扩展标签,同时你可以从MarkupExtension衍生出自定义的。这些内置标
签有:
Binging --- 将两个属性的值绑定在一起
StaticResource --- 一次性匹配资源项
DynamicResource --- 动态的匹配资源项
TemplateBinding --- 将属性的模板控制绑定到属性所依赖的控件上
x:Static --- 设定静态属性的值
x:NULL --- 返回空(null)
在大括号内的第一个标记是扩展标签的名称。所有后面的都是以属性=值
形式的命名参数。下面的例子展示了一个Label,他的内容(Content)被绑定为一个文本框
(TestBox)的文本(Text)。当你在文本框中输入值的时候,他的文本属性会改变,绑定的扩展标签会自动的更形Label的内容。
<TextBox x:Name="textBox "/> <Label 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名字空间之间的映射由组装层次(Assembly level)的XmlnsDefinition 属性完成。你也可以使用clr-namespace直接在XAML中引用一个CLR名字空间,例如:
[/code]
<Window xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”> </Window>
相关文章推荐
- WPF介绍之XAML
- XAML组件属性重复使用 资源(Resources)与样式(Style)介绍
- Xaml语法概述及属性介绍
- XAML语言介绍
- Windows Phone 7 入门-XAML语法介绍
- WPF学习笔记--xaml介绍
- Windows Phone 7 入门-XAML语法介绍
- WPF学习笔记--xaml属性介绍
- RichClient: XUL 系技术介绍 (XAML/JDNC/Flex/...)
- c#--XAML语言介绍
- XAML介绍
- WPF Summary:XAML的介绍
- XAML介绍
- XAML开发WPF程序入门之开发环境介绍
- WP7入门-XAML语法介绍
- Windows phone8 基础篇(二) xaml介绍 一 推荐
- Xaml语法概述及属性介绍
- Windows phone8 基础篇(二) xaml介绍 二
- Xaml语法概述及属性介绍
- WPF Summary:XAML的介绍