文档章节

c# wpf中,x命名空间详解

首席执行官机器人
 首席执行官机器人
发布于 2017/08/17 10:31
字数 866
阅读 23
收藏 0

x名称空间由来:

x名称空间里的成员是专门为XAML编译器看的,用来引导XAML编译器把XAML编译成CLR代码,因此x是XAML的首字母。通过x空间的成员告诉编译器怎么编译XAML,生成什么类名,属性的可访问性等。

x名称空间中的Attribute:

x:Class,用来告诉XAML编译器把XAML标签的编译结果与后台代码的哪个类合并,只能用于根节点,并且根节点的类型要与后台代码的类保持一致。

x:ClassModifier,用来告诉XAML编译器把XAML标签编译成的类具有怎样的访问级别,必须具有x:Class Attribute的标签才能应用,并且与指定的后端代码访问级别一致。

x:Name,用来告诉XAML编译器把创建的对象指向到指定的变量名,这样可以直接在代码中引用该对象。如果标签具有Name属性,同时把Name属性赋值为x:Name指定的值。为了增强代码的统一性,全部使用x:Name来指定对象的变量名。

x:FieldModifier,用来告诉XAML编译器由该标签生成的类的字段的访问级别,默认为internal。

x:Key,为资源字典指定key值,在XAML中通过StaticResource标记扩展进行资源检索时使用,并且可以自动向父级元素检索并一直递归直到找到该资源或到达Application。通过在代码中使用.FindResource方法也可以进行递归检索资源。

x:Shared,与x:Key配合使用,用来指定检索资源对象时,是使用同一个对象副本还是不同的对象,默认x:Share=“True”,因此资源检索得到的是同一个对象。

x名称空间中的标记扩展:

x:Type,类型为TypeExtension的标记扩展,用来在XAML中指定Type类型,与C#中的typeof关键字类似。x:Type的默认参数为类型,如{x:Type local:MyWindow}或{x:Type TypeName=local:MyWindow}。

x:Null,类型为NullExtension的标记扩展,用来在XAML中显示为属性指定Null值,如果在资源字典中定义了Style并把key和TargetType都指定为目标类型,则目标类型的所有标签都默认使用该Style。如果控件不想使用默认Style,则可以为Style指定null,如Style={x:Null}。

标记扩展除了使用标准的大括号形式使用,还可以使用属性元素的语法声明,如<Button.Style><x:Null /></Button.Style>,显然这种写法太繁琐,但如果使用x:Array标记扩展,则必须使用这种标签形式语法。

x:Array,类型为ArrayExtension的标记扩展,用来在XAML中声明数组对象,只能使用标签语法,如以下代码片段

复制代码

<ListBox>
                <ListBox.ItemsSource>
                    <x:Array Type="sys:String">
                        <sys:String>String1</sys:String>
                        <sys:String>String2</sys:String>
                        <sys:String>String3</sys:String>
                    </x:Array>
                </ListBox.ItemsSource>
            </ListBox>

复制代码

x:Static,类型为StaticExtension的标记扩展,用来在XAML中引用类的静态字段或静态属性,如Text={x:Static local:Window1.ShowText}。

XAML指令元素:

XAML指令元素只有两个,x:Code和x:XData,x:Code用来把C#代码放到XAML中,x:XData用来为数据提供者提供数据,如以下代码片段

复制代码

<Page.Resources>
        <XmlDataProvider x:Key="asdf">
            <x:XData>
                <Root>
                    <Item>Item1</Item>
                    <Item>Item2</Item>
                </Root>
            </x:XData>
        </XmlDataProvider>
    </Page.Resources>

本文转载自:http://www.cnblogs.com/jefflee/p/5806041.html

上一篇: gcc 优化参数介绍
下一篇: C#中的反射,
首席执行官机器人

首席执行官机器人

粉丝 12
博文 25
码字总数 23798
作品 0
海淀
程序员
私信 提问
XAML概要--事件和后台代码

大多数WPF应用程序都是由标记和后台代码组成的,在一个项目中,XAML做为.xaml文件来编写的,用VB.NET或C#等CRL语言来编写后台代码文件。当XAML文件被编译时,通过XAML页面的根元素的x:Class...

长平狐
2012/10/16
97
0
将Flash 嵌入WPF 程序

由于WPF 本身中不支持COM 组件同时也无法加载ActiveX 控件,所以需要借助WinForm 引用ActiveX 控件将Flash 加入其中。首先创建一个WPF 项目(WpfFlash),将Flash 文件(.swf)加入到项目中,...

junwong
2012/03/09
218
0
WPF 模拟UI 键盘录入

开发WinForm 应用程序时可以利用SendKeys 类方便的模拟键盘录入操作。那么在WPF 中如何为控件实现键盘模拟呢?本篇将使用WPF SendKeys 实现和WinForm 中相同的效果。 首先将WpfSendKeys.dll...

junwong
2012/03/09
335
0
第一部分:基础知识(第一章)标准的Silverlight文件

你可以在Visual Studio的中解决方案资源管理中查看加载的项目。你会看到两对骨架文件:App.xaml的和App.xaml.cs,和MainPage.xaml和MainPage.xaml.cs。App.xaml和MainPage.xaml是扩展应用程序...

彭博
2012/03/09
102
0
C#或者WPF中让某个窗体置顶

原文:C#或者WPF中让某个窗体置顶 前记:在工作中有个需求,要求不管到那个界面,我必须让一个浮动条(其实是个窗体)置顶。 我用wpf,因为有之前有好几个界面已经设置成topmost了,所以在这几...

杰克.陈
2018/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA 编写redisUtils工具类,防止高并发获取缓存出现并发问题

import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.BoundHashOperations;import org.springframework.data.redis.core.BoundValueOperations;import org.......

huangkejie
45分钟前
5
0
JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
今天
97
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
今天
5
0
正则表达式基础(一)

1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转...

清自以敬
今天
4
0
idea中@Data标签getset不起作用

背景:换电脑以后在idea中有@data注解都不生效 解决办法:idea装个插件 https://blog.csdn.net/seapeak007/article/details/72911529...

栾小糖
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部