XAML和WPF

XAML是WPF编程中一个不可分割的部分。WPF的实现很大部分依赖于XAML提供数据源。学过HTML的同学可以很容易地接受XAML的语法。XAML同样使用标记语法,本质上说是XML标记语言的扩展,用于提供数据,可以支持多种不同种类的数据资源,比如文本,图片,UI样式等等。

和HTML一样,XAML也使用元素作为XAML的操作对象,这里为了便于说明,称之为元素对象。元素对象的定义在XMAL中的格式如下:

<ElementType [元素对象标识] [属性赋值列表]>文本/元素对象</ElementType>

元素对象标识用于表征该元素对象。例如:x:Name,元素对象名;x:Key,资源对象在资源字典里的Key值。举一个具体的例子:

定义一个按钮控件

<Button x:Name="MyButton" Background="White">OK</Button> //  等价于<Button x:Name="MyButton" Background="White" Content="OK"/>

学习过面向对象编程思想的同学很容易解读以上脚本的内在实质。这里用C#进行翻译:

System.Windows.Controls.Button MyButton = new Button();
MyButton.Background = System.Windows.Media.Brushes.White;
MyButton.Content = "OK";
两相比较可以看出,标记语言编程同样是面向对象的高级编程。在XAML中,任意一个元素对象通过一对或者两对尖括号包围而成(</>或<></>)尖括号内第一个标识符表明该对象的类型,例如上例中的Button类型。注意:x:Name是WPF的语法,用于表明元素对象的名称, x:Name并不是Button的成员。紧跟着的赋值对是给元素对象的属性成员赋值。

两对尖括号之间的文本内容会自动赋值给元素对象的默认属性,比如Button类的Content属性。而元素内容则会赋值给父类对象的对应属性。例如:

<Button x:Name="MyButton" Content="OK">
  <Button.Background>White</Button.Background>
</Button>
这里在Button元素中间嵌套了背景元素,该背景元素会自动赋值给Button的Background属性,又如:

<Button>
  <Button.Style>
     <Style Resources="{x:Null}"/>
  </Button.Style>
</Button>

它等价于:

<Button Style="{x:Null}"/>
Button.Style的类型是FrameworkElement.Style,可以接受System.Windows.Style对象,不能接受string类型,所以以下的写法是错误的:
<Button.Style>
  {x:Null}<!--其实就是字符串"{x:Null}"-->
</Button.Style>
System.Windows.Style.Resources必须通过标记扩展语法来指定资源。标记扩展其实是代码重用的一种。如果某个控件(比如“取消”按钮)或者某种资源会在XAML反复使用,那么就可以将它们定义为通用资源,元素对象通过标记扩展的语法来复用这些资源。

所谓的扩展是指在给元素对象的属性赋值的时候,引入新的元素对象,例如:

<Button x:Name="MyButton" Style="{StaticResources ResourceKey=MyResource}"/>
定义了一个按钮控件MyButton,样式风格指定为资源字典里Key值为MyResource的资源。这里在给属性赋值的时候,引入了新的元素对象,是对XML语法的扩展。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值