WPF3-在xaml中引用其他程序集的名称空间

  • [1. 如何在XAML里引用类库中的名称空间和类](#1. 如何在XAML里引用类库中的名称空间和类)
  • [2. 小结](#2. 小结)

1. 如何在XAML里引用类库中的名称空间和类

首先需要记住一点:把类库引用到项目中是引用其中名称空间的物理基础,无论是C#还是XAML都是这样。

一旦将一个类库引用进程序,就可以引用其中的名称空间。

假设我的类库程序集名为MyLibrary.dll,其中包含Common和Controls两个名称空间,而且已经把这个程序集引用进WPF项目,那么在XAML中引用这两个名称空间的语法是:

xmlns:映射名="clr-namespace:类库中名称空间的名字;assembly-类库文件名"

对于MyLibrary.dll里的两个名称空间,XAML中的引用会是:

复制代码
xmlns:common="clr-namespace:Common;assembly=MyLibrary" 

xmlns:controls="clr-namespace:Controls;assembly=MyLibrary"

让我们分析一下XAML引用名称空间的语法。

  • xmlns是用于在XAML中声明名称空间的Attribute,它从XML语言继承而来,是XMLNamespace的缩写。

  • 冒号后的映射名是可选的,但由于可以不加映射名的默认名称空间已经被WPF的主要名称空间占用,所以所引用的名称空间都需要加上这个映射名。映射名可以根据喜好自由选择,

    但团队内部最好使用一致的命名。一个建议就是使用类库中名称空间的原名或者缩写。

  • 引号中的字符串值确定了你要引用的是哪个类库以及类库中的哪个名称空间。

一旦我们将类库中的名称空间引入XAML中,我们就可以在XAML中使用这些名称空间里的类。语法格式是:

<映射名:类名>...<映射名:类名>

例如使用Common和Controls中的类,代码是这样:

复制代码
<common:MessagePanel x:Name="windowl">

<controls:LedButton x:Name="buttonl">

附加一点额外的小知识。我们发现,XAML中引用名称空间的语法与C#不太一样。最大的差别就是XAML需要为被引用的名称空间添加一个映射名,用这个映射名来代表被引用的名称空间。

其实,C#也可以这样引用名称空间,只是不经常用罢了。比如,在C#中引用Common和Controls名称空间时可以这样写:

这种写法在名称较长的名称空间中有同名类时比较有用。

复制代码
using Cmn=Common; 

using Ctl=Controls;

2. 小结

WPF1-从最简单的xaml开始

WPF2-1在xaml为对象的属性赋值

WPF3-在xaml中引用其他程序集的名称空间

WPF4-代码后置

至此,通过几篇博文的讨论,我们已经走马观花地了解了XAML的基本语法。知识虽然不多,但足以保障我们写出美观的程序。要提醒大家的是,XAML是一种很灵活的语言,特别是一些用于简化代码的缩略写法。这些看上去比较奇怪的写法基本上无法系统地用章节来描述,只能依靠我们在实际工作中慢慢积累。不过不用担心,一般情况下比较复杂的代码都能使用前面学过的语法解释清楚。

相关推荐
脚踏实地皮皮晨14 小时前
003006001_WrapPanel控件
开发语言·c#·.net·wpf·visual studio
脚踏实地皮皮晨15 小时前
003005002_WPF StackPanel 基类官方类定义逐行深度解析
开发语言·windows·算法·c#·wpf·visual studio
脚踏实地皮皮晨20 小时前
003004002_UniformGrid控件的使用方法
开发语言·c#·.net·wpf·visual studio
脚踏实地皮皮晨2 天前
003003002_WPF Grid 基类官方类定义逐行深度解析
开发语言·windows·算法·c#·wpf·visual studio
脚踏实地皮皮晨3 天前
003002004_WPF Panel 基类 官方类定义
开发语言·windows·算法·c#·wpf·visual studio
湿滑路面3 天前
Rouyan:使用WPF/C#构建的基于LLM的快捷翻译小工具
开发语言·c#·wpf
软萌萌的13 天前
C#中的多级缓存架构设计与实现深度解析
缓存·c#·wpf
dalong104 天前
WPF:3D正八面体自动旋转
3d·wpf
仙宇觉尘4 天前
WPF Stylet可以如何实现导航功能?
java·开发语言·wpf
丙氨酸長鏈4 天前
WPF 引用 ASP.NET Core 的 AOT 版本
后端·asp.net·wpf