当前位置: 首页 > news >正文

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

  • 1. 如何在XAML里引用类库中的名称空间和类
  • 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. 小结

XAML系列文章:
WPF1-从最简单的xaml开始

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

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

WPF4-代码后置

WPF5-x名称空间

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

http://www.lryc.cn/news/526782.html

相关文章:

  • Python 在Word中添加、或删除超链接
  • 基于 WPF 平台使用纯 C# 实现动态处理 json 字符串
  • 「全网最细 + 实战源码案例」设计模式——单例设计模式
  • 第01章 19 通过点数据逐级构建球体体数据的综合性小例子
  • CVE-2024-23897-Jenkins任意文件读取漏洞复现
  • 前端react后端java实现提交antd form表单成功即导出压缩包
  • 基于ESP32的桌面小屏幕实战[6]:环境搭建和软件基础
  • 接口(完)
  • 数据结构——实验七·排序
  • JVM堆空间
  • 【详细】SSH公私钥认证与渗透测试攻击场景
  • 常见的多媒体框架(FFmpeg GStreamer DirectShow AVFoundation OpenMax)
  • C++异步future
  • Oracle 12c 中的 CDB和PDB的启动和关闭
  • Vue组件开发-使用 html2canvas 和 jspdf 库实现PDF文件导出 设置页面大小及方向
  • chrome插件:网页图片高清下载
  • 汽车定速巡航
  • CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)
  • WPF基础 | WPF 布局系统深度剖析:从 Grid 到 StackPanel
  • 14-6-2C++STL的list
  • 【AI论文】Sigma:对查询、键和值进行差分缩放,以实现高效语言模型
  • 私域流量池构建与转化策略:以开源链动2+1模式AI智能名片S2B2C商城小程序为例
  • vofa++使用方法
  • LogicFlow 一款流程图编辑框架
  • HTML<kbd>标签
  • PyQt6医疗多模态大语言模型(MLLM)实用系统框架构建初探(上.文章部分)
  • 150 Linux 网络编程6 ,从socket 到 epoll整理。listen函数参数再研究
  • 深入浅出 SQLSugar:快速掌握高效 .NET ORM 框架
  • ESP8266 NodeMCU与WS2812灯带:实现多种花样变换
  • MacOS安装Docker battery-historian