WPF XAML命名空间和命名空间映射

在VS创建了一个默认的WPF应用程序后,会发现自动生成的XML代码有一串莫名奇妙的URL代码,如下图所示。


image.png

那这些URL标识的作用是什么呢,答案是命名空间。

核心命名空间

//第一段命名空间 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

第一段命名空间是WPF控件的命名空间,WPF命名空间本来是要在C#中引入的,例如:

using System.Windows;
using System.Windows.Controls;
using ......

但是由于不同控件在不同的命名空间,引入起来特别麻烦,因此XMAL就将这些命名空间封装到了一个URL标识中。

//第二段命名空间
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

第二段命名空间引用的是默认XAML类库,其中包含大量的XAML专用的元素和属性,通过在标签中标记x:使用。而第一段命名空间是默认命名空间,不需要标记任何标记就可以使用,这样做的原因是WPF命名空间的元素远多于XAML命名空间的元素和属性。如下代码块:

//<Grid>不需要标记,x:Name需要标记
<Grid x:Name="Grid1"> </Grid>

这两段命名空间是核心命名空间,也是写XAML必需引用的,因为不可能不用到WPF和XAML类库。

设计类命名空间

//该命名空间引用Expression Blend辅助设计类库,对Visual Studio和Expression Blend视图设计模式提供支持,其实际设计中主要提供设计视图页面尺寸定制。
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
//该命名空间引用XAML语言辅助类库,对XAML提供辅助设计支持,主要功能是为XAML语法解析器提供辅助解释功能,例如,使用mc:Ignorable=“d”告知XAML解析器以“xmlns:d”为前缀的元素引用在运行时被忽略。
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

主要是给Visual Studio 和 Expression Blend设计软件提供支持的,这里不着重介绍。

使用系统类

//可以应用系统类,如System,System.Collections
xmlns:s="clrnamespace:System.Collections;assembly=mscorlib"

使用自定义类

//定义了一个自定义的Person的命名空间后,可以如下引用
xmlns:local="clr-namespace:Person"

使用DLL程序集

首先在项目中添加程序集的引用,然后在XAML引入其命名空间

//引入DLL程序集中的Library1命名空间
  xmlns:customlib="clr-namespace:Library1;assembly=Library"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,222评论 19 139
  • 编程师小刘阅读 191评论 0 0
  • 今天竟然没有看完,不过看书时间确实挺短的。而且小说本身有一点点流水账的感觉。一直在认真地说事情,非常直白。之前看书...
    Super_亭小亭阅读 238评论 0 0
  • -时间: 12月30日14:25(降落)-01月01日13:15(登机) -证件需带: 身份证、学生证、羊城通、2...
    污琳阅读 3,498评论 0 0
  • 今天你爸回来啦,后天我们就要回南京了。你暂时吃不到你爷爷做的椒盐河虾了,这貌似是你最爱吃的菜。妈妈也不能每天吃大餐...
    杨茗辞阅读 249评论 1 0