WPF 基础 - x 名称空间详解
| 名称 | 种类(默认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 名称空间详解的更多相关文章
- 深入浅出WPF-04.x名称空间详解
x名称空间详解 几个需要特别说明的名称空间: x:Class 用来标记XAML和后台代码之间的合并关系.x:Class根节点的类型必须和x:Class值指向的类型保持一致.x:Class的值指向的类型 ...
- WPF读书笔记 x名称空间详解(第二天)
每天看一点,每天进步一点. x名称空间映射的是http://schemas.microsoft.com/winfx/2006/xaml,它包含的类均与解析XAML语言关,亦可称为"XAML名 ...
- [No000013F]WPF学习之X名称空间详解
X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的.用来引导XAML代码将XAML代码编译为CLR代码. 4.1X名称空间里面到底都有些什么? x名称空间映射的是:htt ...
- WPF学习之X名称空间详解
X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的.用来引导XAML代码将XAML代码编译为CLR代码. 4.1X名称空间里面到底都有些什么? x名称空间映射的是:htt ...
- 9、XAML名称空间详解
XAML命名空间 <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...
- WPF之X名称空间学习
WPF的X名称空间都有什么呢?首先,盗用张图来说明: 我将就图表中的内容进行总结: 1.x:Array具有一个Iteams属性,它能暴漏一个ArratList实例,ArratList实例的内部成员类型 ...
- ELK&ElasticSearch5.1基础概念及配置文件详解【转】
1. 配置文件 elasticsearch/elasticsearch.yml 主配置文件 elasticsearch/jvm.options jvm参数配置文件 elasticsearch/log4 ...
- Linux基础知识之挂载详解(mount,umount及开机自动挂载)
Linux基础知识之挂载详解(mount,umount及开机自动挂载) 转载自:http://www.linuxidc.com/Linux/2016-08/134666.htm 挂载概念简述: 根文件 ...
- Qt零基础教程(四) QWidget详解篇
在博客园里面转载我自己写的关于Qt的基础教程,没次写一篇我会在这里更新一下目录: Qt零基础教程(四) QWidget详解(1):创建一个窗口 Qt零基础教程(四) QWidget详解(2):QWid ...
随机推荐
- CF1474-A. Puzzle From the Future
CF1474-A. Puzzle From the Future 题意: 有两个由\(0,1\)组成的.长度相等字符串\(a, b\),两个字符串按位相加得到一个新的字符串\(s\),对\(s\)取\ ...
- K8S(14)监控实战-grafana出图_alert告警
k8s监控实战-grafana出图_alert告警 目录 k8s监控实战-grafana出图_alert告警 1 使用炫酷的grafana出图 1.1 部署grafana 1.1.1 准备镜像 1.1 ...
- Atlas 分表功能
目录 分表原因 分表方式 Atlas 分表 分表思路 配置 Atlas 创建原表 创建分表 数据测试 分表原因 1.数据过多,访问缓慢 2.创建索引时重新排序,创建缓慢,并且占用大量的磁盘空间 分表方 ...
- python argparse (更新中)
action='store_true' 例如 parser.add_argument("--generate_text_embedding", action='store_true ...
- H.264视频压缩标准
H.264 这部分一直在讲,但是却没有系统的来说.接下来要详细. 参看:H.264视频压缩标准 一.简介 H.264是最新的视频压缩标准,它也称为MPEG-4 Part 10或AVC(高级视频编码). ...
- IDEA 安装常用操作二
一.IDEA启动慢,因为启动时编译.缓存.创建索引等,如果断电等启动异常,可以让缓存索引失效 迁移IDEAD时,可以找到config.system等文件夹, 随着时间使用越久,空间占用越大,另外觉得浪 ...
- 使用opencv-python实现MATLAB的fspecial('Gaussian', [r, c], sigma)
reference_opencv实现高斯核 reference_MATLAB_fspecial函数说明 # MATLAB H = fspecial('Gaussian', [r, c], sigma) ...
- github & coding 2018
github & coding 2018 github & coding all in one https://github.com/topics/javascript react r ...
- c++ 遍历当前程序的线程
#include <iostream> #include <Windows.h> #include <Psapi.h> #include <TlHelp32. ...
- 炒币亏损一万美金?不如抢SPC空投!
币圈的市场可以用风云变幻来形容,1月9日的时候比特币震荡,其他币种争先上涨,连平时都不涨的币种都拉出了10%-20%的领先涨幅,市场惊呼牛市来了,但喜悦还没有维持一天,1月10日(昨天)市场就走向另一 ...