原文:https://blog.csdn.net/catshitone/article/details/71213371

新建一个wpf的项目,我们先来看下它默认的命名空间都是哪些?

可以看到xmlns有的是网址,有的是clr-namespace开头的一串字母。clr开头的比较好理解,就是运行时的命名空间,就像C#代码中的using xxxx之类的一样。

但是对于网址开头的命名空间有可能就有点疑惑了,它究竟代表的是什么?xaml文件被解析的时候会访问这个网址吗?如果这个网址那天不能get了,那我们的程序是不是就不能正常运行了。

在这里我先把结论告诉大家,然后在一步步分析是为什么。

结论:

以xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation这个为例,其实它就是System.Windows,System.Windows.Automation,System.Winjdows.Controls....等一系列命名空间的集合,是这个集合的【别名】,在浏览器输入这个网址有时候是不可访问的。如果自己定义类库的话,我把这个【别名】叫做张三也是可以的。微软建议,这个一般定义为公司网址,或者个人网址。

分析:

我们一步步来看看,为什么我们添加一个引用后,xmlns那里能够自动进行提示相应的网址。

1.用.NetReflector反编译WindowsBase.dll,可以看到:

那个http开头的命名空间,与N个传统的命名空间做了映射。

2.自定义一个类库也采用网址命名空间的这种方式。

新建一个wpf类库项目,名为WpfLibrary。更改其AssemblyInfo.cs文件,增加这么一行:

  1. [assembly: XmlnsDefinition("www.wangzhi.com", "WpfLibrary")]

注意添加using System.Windows.Markup;

添加后的就是这样子:

3.新建一个Wpf Application项目,在引用里添加第二步中生成的dll文件。

在添加命名空间的时候,我们可以看到自动提示:

4.再尝试另一种方式的命名空间

我们将添加的那句assemlby:xmlnsdefinition(.......)去掉,然后重新生成类库,在重新添加引用。那么这次智能提示里肯定没有www.wangzhi.com这个命名空间了。有的是这个:

5.由此可见,网址形式的命名空间等价于传统形式的命名空间,而且还可以是1对N的关系。网址形式的写一行,抵得上传统形式的N多行,节约手工代码量。

【C#】wpf中的xmlns命名空间为什么是一个网址,代表了什么意思(转载)的更多相关文章

  1. 【转】wpf中的xmlns命名空间为什么是一个网址,代表了什么意思

    wpf中的xmlns命名空间为什么是一个网址,代表了什么意思 http://blog.csdn.net/catshitone/article/details/71213371

  2. WPF中多个RadioButton绑定到一个属性

    如图样: 在View中: <RadioButton IsChecked="{Binding Option, Converter={cvt:EnumToBooleanConverter} ...

  3. WPF中不规则窗体与WebBrowser控件的兼容问题解决办法

    原文:WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 引言 这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序. ...

  4. 解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)

    总结起来就是:设计器的版本要跟外部引用的库版本一致,否则XAML设计器就会显示不出来. 例如你的程序是X64的,但是引用的COM组件是32位的,就会显示不出来.这里的建议是:编译一个32位的COM中间 ...

  5. [转]在WPF中区别TextBlock和Label

    TextBlock和Label都是用来显示少量数据的.好多文章对Label存在的描述都是它允许使用"快速获取"."快速获取"就是允许你用Alt加上其它的按键快速 ...

  6. WPF中的数据绑定!!!

    引用自:https://msdn.microsoft.com/zh-cn/magazine/cc163299.aspx  数据点: WPF 中的数据绑定 数据点 WPF 中的数据绑定 John Pap ...

  7. Unity3D 将 Unity 嵌入WPF中的一些研究笔记

     一. 在 WPF 中使用 WebBrowser,直接打开 WebPlayer.html 以这种方式有一个问题是. 无法在 WebBrowser 的上面 放置其它的控件, 在运行时,都不会显示 . 以 ...

  8. [转]在WPF中使用WinForm控件方法

    本文转自:http://blog.csdn.net/lianchangshuai/article/details/6415241 下面以在Wpf中添加ZedGraph(用于创建任意数据的二维线型.条型 ...

  9. wpf中的数据模板

    wpf中的模板分为数据模板和控件模板,我们可以通过我们自己定制的数据模板来制定自己想要的数据表现形式.例如:时间的显示可以通过图片,也可以通过简单数字表现出来. 例如: (1)先在Demo这个命名空间 ...

随机推荐

  1. date命令以及date -d使用

    date -d '2 days ago' //显示2天前的时间,2019年 02月 10日 星期日 08:53:28 CST date -d "2 days ago" +%Y%m% ...

  2. 升级Jenkins版本

    找到jenkins.war文件的安装目录 cd /usr/local/tomcat/tomcat1_jenkins/webapps/ 停止jenkins service tomcat_jenkins ...

  3. 通过全备+relaylog同步恢复被drop的库或表【转】

    MySQL 中drop 等高危误操作后恢复方法 实验目的: 本次实验以恢复drop操作为例,使用不同方法进行误操作的数据恢复. 方法: 利用master同步 伪master+Binlog+同步 利用b ...

  4. bug笔记(pc)

    1.如果a标签中的href没有设置,那么点击的这个按钮的时候,这个页面会自动刷新!!! Bug:   <a href=”” class=”btn”></a>类似这种情况,点击a ...

  5. codeforces 461div.2

    A Cloning Toys standard input/output 1 s, 256 MB     B Magic Forest standard input/output 1 s, 256 M ...

  6. 51nod--1242 斐波那契数列第N项 (矩阵乘法优化)

    题目: 1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) ...

  7. MySQL跟踪SQL执行之开启慢查询日志

      查询慢查询相关参数   show variables like '%quer%';   slow_query_log(是否记录慢查询)   slow_query_log_file(慢日志文件路径) ...

  8. [javascript]multipart/form-data上传格式表单自定义创建

    <!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...

  9. Django 笔记(二) 新建 ~ 渲染

    新建APP python manange.py startapp app_name 然后右键 pycharm 的项目目录,将新建的目录从服务器上下载进来 URL(Uniform Resoure Loc ...

  10. iOS ATS问题(补充中)

    首先,针对2017年一月后,需要提交到apple store的程序,如果使用App Transport Security Settings对程序 ATS情况进行特殊配置,需要对苹果进行说明,指出使用的 ...