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是一种很灵活的语言,特别是一些用于简化代码的缩略写法。这些看上去比较奇怪的写法基本上无法系统地用章节来描述,只能依靠我们在实际工作中慢慢积累。不过不用担心,一般情况下比较复杂的代码都能使用前面学过的语法解释清楚。

相关推荐
Poetinthedusk21 小时前
WPF应用跟随桌面切换
开发语言·wpf
小北方城市网1 天前
MongoDB 分布式存储与查询优化:从副本集到分片集群
java·spring boot·redis·分布式·wpf
听麟2 天前
HarmonyOS 6.0+ 智慧出行导航APP开发实战:离线地图与多设备位置协同落地
华为·wpf·harmonyos
笨蛋不要掉眼泪2 天前
Spring Boot + RedisTemplate 数据结构的基础操作
java·数据结构·spring boot·redis·wpf
LcVong3 天前
WPF MediaPlayer获取网络视频流当前帧并展示图片完整范例
网络·wpf
bugcome_com3 天前
WPF数据绑定入门:从传统事件到5种绑定模式
wpf
LateFrames3 天前
我用 WPF 做了一个 “苍蝇飞舞” 的屏保
ui·wpf
wuty0073 天前
完善基于WPF开发的标尺控件(含实例代码)
wpf·wpf标尺·支持横向竖向标尺·ruler
浩浩测试一下4 天前
洪水猛兽攻击 Ddos Dos cc Drdos floods区别
安全·web安全·网络安全·系统安全·wpf·可信计算技术·安全架构
无心水4 天前
分布式环境下定时任务与SELECT FOR UPDATE的陷阱与解决方案
分布式·后端·wpf·xxl-job·quartz·定时任务·selectforupdate