首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

浅谈WPF中x姓名空间(二)

2012-09-07 
浅谈WPF中x名称空间(二) .二、x名称空间中的标记扩展?? 标记扩展(Markup Extension)实际上就是一些MarkupEx

浅谈WPF中x名称空间(二) .

二、x名称空间中的标记扩展

?? 标记扩展(Markup Extension)实际上就是一些MarkupExtension类直接或者间接的派生类,在x名称空间中就存在这样一些类,所以常称它们为x名称空间内的标记扩展。

下面我们来看一下常用的标记扩展吧!

1、x:Type 从字面上开,x:Type的值应该是一个数据类型的名称。一般情况下,我们在编程中操作的是数据类型的实例或者是实例的引用,但是有时候我们也会用到数据类型本身。下面我们还是来看一个例子吧!

???? 首先创建一个Button的派生类:

 class MyButton:Button    {           public Type UserWindowType {get; set; }           protected override void OnClick(          {                 base.OnClick();                 Window win = Activator.CreateInstance(this.UserWindowType) as Window;                 if(win != null)                        win.ShowDialog();          }

?

在该类中存在一个Type类型的属性,即UserWindowType,此时你需要将一种数据类型当做值赋给它。同时在该类中重写了父类的OnClick方法,此时可以像父类那样激活Click时间,还会创建UserWindowType所存储类型的一个实例。

<Window x:Width="200" Height="170">                  <StackPanel Background="LightBlue">                                  <TextBox />                                  <TextBox />                                  <Button Content="确认" />                  </StackPanel> </Window>

?

此时,我们将自定义按钮添加到窗口中,并且把Window1作为数据类型复制给自定义按钮的UserWindowType属性。

<Window x:Width="300" Height="300">                  <StackPanel>                            <local:MyButton Content="Show" UserWindowType="{x:Type TypeName=local:Window1}" />                  </StackPanel> </Window>

?

这就是x:Type的用法了!

2、x:Null 该标记扩展的作用是将一个空值显示的赋给一个属性。我们知道在C#中用null表示空值,那么在xaml中就用x:Null表示空值了。同样让我们来看一个例子:

<Window.Resource><Style TargetType="Button">        <Setter Property="Background" Value="LightBlue" /></Style></Window.Resource><StackPanel><Button Content="Button1" /><Button Content="Button2" /><Button Content="Button3"/><Button Content="Button4" Style="{x:Null}" /></StackPanel>

?

以上代码的运行效果是,前三个Button的背景色均为浅蓝色,而最后一个button为默认颜色。知道x:Null的用法了吧!

3、x:Array 该Attribute的作用就是通过它的Items属性向使用者报了一个类型已知的ArrayList实例,ArrayList内成员的类型有x:Array的Type指明。下面我们一个例子来说明吧!

<ListBox><ListBox.ItemsSource><x:Array Type="sys:String"><sys:String>1</sys:String><sys:String>2</sys:String><sys:String>3</sys:String></x:Array></ListBox.ItemsSource></ListBox>

运行程序,你就知道效果了!

4、x:Static 是一个很常用的标记扩展,它的主要作用是使用数据类型中的Static成员。主要用于程序的国际化支持了。同样用例子说话:

public class Chinese{      public static string btnSure = "确认";}public class English{     public static string btnSure = "OK";}

??

根据选择不同的语言,使其展现内容的语言不同

<Button Content="{x:Static ocal:Chinese.btnSure}"

?

三、XAML指令元素

x:Code 主要用于在xaml中写入C#代码

热点排行