浅谈WPF中x名称空间(二)
来源:互联网 发布:mac pro 无线鼠标 编辑:程序博客网 时间:2024/06/05 05:29
二、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:Class="WpfApplication.Window1"
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
Title="Window1" Width="200" Height="170">
<StackPanel Background="LightBlue">
<TextBox />
<TextBox />
<Button Content="确认" />
</StackPanel>
</Window>
此时,我们将自定义按钮添加到窗口中,并且把Window1作为数据类型复制给自定义按钮的UserWindowType属性。
<Window x:Class="WpfApplication.Window2"
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
Title="Window2" 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#代码
- 浅谈WPF中x名称空间(二)
- 浅谈WPF中x名称空间(一)
- WPF学习笔记(二)x名称空间
- WPF中的x名称空间
- WPF 之 X名称空间
- WPF学习笔记(3)——x名称空间详解 中
- WPF学习之X名称空间详解
- WPF XAML X名称空间详解
- WPF学习笔记(2)——x名称空间详解 上
- WPF学习笔记(4)——x名称空间详解 下
- WPF快速学习笔记三 x名称空间
- WPF学习第五集-X名称空间详解
- 学习笔记:WPF学习之X名称空间详解
- WPF名称空间
- (一一二)名称空间
- Direct X名称空间
- x 名称空间
- x名称空间中的内容
- 英文投稿的一点经验
- Java多线程1—程序、进程、线程比较
- 一致性Hash算法(转)
- word文档加密
- 顺序图——Sequence Diagram
- 浅谈WPF中x名称空间(二)
- POJ 3169 SPFA 差分约束 最大值->最短路径求法
- Code Review关注点
- awk文本处理总结(入门,中级,高级)
- 10.11
- 位域
- exit--系列
- tar命令详解
- 实例:新闻管理系统(一)