名称 种类(默认Attribute) 备注
x:Array 标记拓展 可作为 ListBox.ItemsSource 的值
x:Class 指定与 .cs 中哪个类合并,所指示的类型在声明时使用 partial 关键字
x:ClassModifier 指定标签编译生成的类具有怎样的访问控制级别,跟类型的访问级别要一致 public、internal
x:Code XAML 指令元素 把代码后置的 C# 代码写到 xaml 中
x:FieldModifier 当从一个程序集访问另一个程序集的窗体的元素时,就需要把被访问控件的引用变量改为 public 级别
x:Key 标注资源,其他地方可以通过 key 值找到这个资源
x:Name 标注标签,其他标签或后置代码可以通过 Name 值找到这个资源
x:Null 标记拓展 表示空值,一般用于有默认值但是又不需要这个默认值时。如:Sytle="{x:Null}"
x:Shared 默认为 true,与 x:key 一起配合使用,表示调用资源时是否每次得到的都是同一个对象。
x:Static 标记拓展 调用某个类的静态属性
x:Subclass
x:Type 标记拓展 1)编程层面:数据类型,创建对象时开辟相应大小的内存;2)逻辑层面:抽象和封装的结果
x:TypeArguments
x:Uid 元素的唯一标识符
x:XData XAML 指令元素 用于资源中的 XmlDataProvider 标签

1. x:type 示例

public 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();
}
}
}
<Window x:Class="WpfApp1.CommandMode.MyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1.CommandMode"
mc:Ignorable="d"
Title="MyWindow" Height="450" Width="800">
<Grid Background="Yellow"> </Grid>
</Window> <!--把 MyWindow 作为一种数据类型赋值给 MyButton.UserWindowType-->
<local:MyButton UserWindowType="{x:Type local:MyWindow}" Content="OpenMyWindow"/>
<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
</Style>

2. x:Array 示例

x:Null、x:Type 两个标记拓展一般用更简洁的方式即用花括号括起来的字符串作为值赋给标签 Attribute 的形式。但 x:Array 必须用标记拓展的方式。

<Window ...
xmlns:sys="clr-namespace:System;assembly=mscorlib">
</Window> <!--如果是简洁写法:并不能给 ArrayExtension 的 只读属性 Items 赋值-->
<ListBox ItemsSource="{x:Array Type=sys:String}"/> <!--正确写法-->
<ListBox>
<ListBox.ItemsSource>
<x:Array Type="{x:Type sys:String}">
<sys:String>hallo1</sys:String>
<sys:String>hallo2</sys:String>
<sys:String>hallo3</sys:String>
</x:Array>
</ListBox.ItemsSource>
</ListBox>
<!--等同于-->
<ListBox>
<ListBox.Items>
<sys:String>hallo1</sys:String>
<sys:String>hallo2</sys:String>
<sys:String>hallo3</sys:String>
</ListBox.Items>
</ListBox>

3. x:XData 示例

<Window.Resources>
<XmlDataProvider x:Key="XMlData">
<x:XData>
<Super xmlns="">
<Colors>
<Color>红</Color>
<Color>绿</Color>
<Color>黄</Color>
</Colors>
<Sexs>
<Sex>男</Sex>
<Sex>女</Sex>
</Sexs>
</Super>
</x:XData>
</XmlDataProvider>
</Window.Resources>
<StackPanel>
<!--红绿黄各一行-->
<ListBox ItemsSource="{Binding Source={StaticResource XMlData}, XPath=/Super/Colors/Color}">
<!--男女各一行-->
<ListBox ItemsSource="{Binding Source={StaticResource XMlData}, XPath=/Super/Sexs/Sex}">
<!--红绿黄男女总共一行-->
<ListBox ItemsSource="{Binding Source={StaticResource XMlData}, XPath=/Super}">
</StackPanel>

WPF 基础 - x 名称空间详解的更多相关文章

  1. 深入浅出WPF-04.x名称空间详解

    x名称空间详解 几个需要特别说明的名称空间: x:Class 用来标记XAML和后台代码之间的合并关系.x:Class根节点的类型必须和x:Class值指向的类型保持一致.x:Class的值指向的类型 ...

  2. WPF读书笔记 x名称空间详解(第二天)

    每天看一点,每天进步一点. x名称空间映射的是http://schemas.microsoft.com/winfx/2006/xaml,它包含的类均与解析XAML语言关,亦可称为"XAML名 ...

  3. [No000013F]WPF学习之X名称空间详解

    X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的.用来引导XAML代码将XAML代码编译为CLR代码. 4.1X名称空间里面到底都有些什么? x名称空间映射的是:htt ...

  4. WPF学习之X名称空间详解

    X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的.用来引导XAML代码将XAML代码编译为CLR代码. 4.1X名称空间里面到底都有些什么? x名称空间映射的是:htt ...

  5. 9、XAML名称空间详解

    XAML命名空间 <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"      ...

  6. WPF之X名称空间学习

    WPF的X名称空间都有什么呢?首先,盗用张图来说明: 我将就图表中的内容进行总结: 1.x:Array具有一个Iteams属性,它能暴漏一个ArratList实例,ArratList实例的内部成员类型 ...

  7. ELK&ElasticSearch5.1基础概念及配置文件详解【转】

    1. 配置文件 elasticsearch/elasticsearch.yml 主配置文件 elasticsearch/jvm.options jvm参数配置文件 elasticsearch/log4 ...

  8. Linux基础知识之挂载详解(mount,umount及开机自动挂载)

    Linux基础知识之挂载详解(mount,umount及开机自动挂载) 转载自:http://www.linuxidc.com/Linux/2016-08/134666.htm 挂载概念简述: 根文件 ...

  9. Qt零基础教程(四) QWidget详解篇

    在博客园里面转载我自己写的关于Qt的基础教程,没次写一篇我会在这里更新一下目录: Qt零基础教程(四) QWidget详解(1):创建一个窗口 Qt零基础教程(四) QWidget详解(2):QWid ...

随机推荐

  1. 同时拿到BATJMD的Offer是怎样的一种体验?

    写在前面 又到了收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer.还是那句话:进大厂临时抱佛脚是肯定不行的,一定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历 ...

  2. Docker网络模式详解

    一.Docker四种工作模式 安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络). none .hosthost:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用 ...

  3. codevs1169传纸条 不相交路径取最大,四维转三维DP

    这个题一个耿直的思路肯定是先模拟.. 但是我们马上发现这是具有后效性的..也就是一个从(1,1)开始走,一个从(n,m)开始走的话 这样在相同的时间点我们就没法判断两个路径是否是相交的 于是在dp写挂 ...

  4. MOOC学习成果认证及对高等教育变革路径的影响

    MOOC是网络开放教育创新发展的产物,也是备受人们欢迎的网络学习途径.当前制约MOOC能否可持续深入发展的问题聚焦于MOOC学习成果能否得到合理的认证.MOOC学习成果认证分为非学分认证和学分认证.M ...

  5. React Native & Security

    React Native & Security https://reactnative.dev/docs/security React Native blogs https://reactna ...

  6. js 小数转整数,避免精度损失 bug

    js 小数转整数,避免精度损失 bug const arr = [ 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ]; // ( ...

  7. setTimeout 实现原理, 机制

    setTimeout 实现原理, 机制 JS 执行机制说起 浏览器(或者说 JS 引擎)执行 JS 的机制是基于事件循环. 由于 JS 是单线程,所以同一时间只能执行一个任务,其他任务就得排队,后续任 ...

  8. npm install 原理

    npm install 原理 https://docs.npmjs.com/about-npm/ npm consists of three distinct components: the webs ...

  9. Android 获取apk的URL Schemes

    1. 下载apk到你的PC上 2. 反向工程Android APK文件的工具 Apktool 3. 查看"AndroidManifest.xml"文件 See alse: http ...

  10. Flutter Android Toast Message(flutter访问Android Toast Message)

    原文 Android Toast通知可用于向用户发送快速消息,并在几秒钟后消失. 但是当涉及Flutter时,没有直接的方式来显示这些Toast消息.因此,我们需要找到一种替代方法来实现它.在这种情况 ...