原文: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. c#基础之异常处理

    在开发过程中,经常遇到各种各样的小问题,很多是由于基础不牢固,没有经常总结导致的.遇到重复的问题可能可根据以往经验处理,但是对问题本身引发的原因进行深入的了解.工作很多年,但是c#基础像一层冰一样,可 ...

  2. HBase详细概述

    原文地址:https://blog.csdn.net/u010270403/article/details/51648462 本文首先简单介绍了HBase,然后重点讲述了HBase的高并发和实时处理数 ...

  3. struts2框架之重复提交问题

    防止重复提交 1. 什么是重复提交 * 提交表单时,点击一次后,页面没有刷新时,马上又点击一次,就是重复提交 * 提交后,通过浏览器的回退,又回到了表单页面,再次提交 * 提交后,按F5刷新,也是重复 ...

  4. python操作三大主流数据库(4)python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示

    python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示 参考文档http://flask.pocoo.org/docs/0.11/http://flask ...

  5. Thread Synchronization Queue with Boost

    介绍:当开发一个多线程程序时,同步是一个很大的问题.如果你的程序需要数据流包,那么用队列是个好办法. 你可以在 http://www.boost.org/ 发现 boost 库和文档,从它的网站可以看 ...

  6. android SDK与ADT版本更新问题

    android SDK与ADT版本更新问题 问题:This Android SDK requires Android Developer Toolkit version 14.0.0 or above ...

  7. Day6------------软连接和硬链接

    一.块 1.操作系统分四大类块 super block 掌管全局 inode block directory block block 2.删文件 普通删除只是删除链接,数据还在硬盘 彻底删除:覆盖操作 ...

  8. python-面向对象之继承

    一.继承介绍 继承是一种新建类的方式,新建的类称之为子类或者派生类,被继承的类称为父类/基类/超类 python中继承的特点: 1.子类可以遗传/重用父类的属性 2.子类可以有多个父类 3.Pytho ...

  9. C#标准体重判断

  10. html<meta>标签

    1. 定义说明 <meta>提供与页面有关的元数据,元数据是对数据的描述 <meta>总是位于<head></head>中 <meta>定义 ...