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

WPF 自定义控件库名称空间

写WPF项目时,是否有见过有的第三方ui控件库,引用时在xaml文件中使用的是类似网址样式的名称空间?
image
如上,使用handycontrol库时,我们会引入:xmlns:hc="https://handyorg.github.io/handycontrol",然后就可以使用hc来使用handycontrol库中的各种控件了。
咦?是不是觉得好方便哇!!!

handycontrol是怎么做到的?

让源码来说话,我们跑到handycontrol的控件库git仓库中一探究竟:
image
原来是在项目属性文件中加入 XmlnsDefinition 和 XmlnsPrefix 就可以diy自己的控件库名称空间别名了。

为什么会有这种形式的空间名称?

因为方便;如果没有这种操作,控件库的控件类型可能在不同的名称空间中,使用的时候难道要写 xmlns:hc1、xmlns:hc2、...写一堆么?有了这个映射技巧,就可以只引入一个网址形式的字符串去引用控件库下的各种控件了。

连前缀都可以不带?

不知道你是否有注意过,直接可以在xaml文件中敲出其类型而不需要加入空间前缀。如<Button/>,你不会去写<xxxx:Button/>对吧?这是为什么?
继续让源码来说话,我们跑到wpf提供的内置控件库wpf控件库看一下:
image
可以看到wpf把Button、Window等等这些控件所在的名称空间映射到了 http://schemas.microsoft.com/winfx/2006/xaml/presentationhttp://schemas.microsoft.com/winfx/2007/xaml/presentationhttp://schemas.microsoft.com/winfx/2009/xaml/presentation
下面了。

<UserControlxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
</UserControl>

而我们新建一个窗体或者用户控件,IDE帮我们默认生成的文件必然会带着xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"这就解释了Button、Window为什么不用带前缀了:因为都被映射到了默认空间中了。
由此,我们可以编辑自己写的自定义控件的程序集项目中的AssemblyInfo文件,

//在你的项目的AssemblyInfo.cs文件中添加
[assembly: System.Windows.Markup.XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "bigboss.controls")]
[assembly:System.Windows.Markup.XmlnsPrefix    ("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "bigboss")]

那么之后在别的项目的xaml文件中使用bigboss程序集下的控件就不需要写"烦人"的前缀了。

http://www.jsqmd.com/news/358685/

相关文章:

  • 小程序毕设项目:基于springboot+小程序的温州博物馆小程序的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 导师严选!自考必备的AI论文网站 —— 千笔·专业学术智能体
  • 真心不骗你!本科生专属降AI率网站 千笔·专业降AIGC智能体 VS 锐智 AI
  • 【毕业设计】基于springboot+小程序的温州博物馆小程序的设计与实现(源码+文档+远程调试,全bao定制等)
  • 毕业论文无忧:11个AI辅助写作网站精选
  • AI元人文:跨文化共生与文明新契约
  • 小程序计算机毕设之基于springboot+小程序的温州博物馆小程序基于微信小程序的温州博物馆系统博物馆展览预约参观讲解(完整前后端代码+说明文档+LW,调试定制等)
  • AI赋能论文写作:11款跨学科工具推荐
  • 【计算机毕业设计案例】基于Springboot+Uniapp的博物馆预约微信小程序设计与实现基于springboot+小程序的温州博物馆小程序的设计与实现(程序+文档+讲解+定制)
  • 学术研究利器:11款AI论文写作工具盘点
  • 人工智能驱动的科研新范式及学科应用研究
  • 科研效率拉满!2026 优质 AI 写论文软件精选(实测推荐)
  • 大模型提示词:零样本(Zero-shot)和少样本(Few-shot)介绍(Zero shot、Few shot)
  • 高效论文写作:11个AI工具助力学术研究
  • 多学科适用:11个AI辅助毕业论文写作平台
  • [全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
  • php python+vue开题报告基于Android平台的相册管理系统
  • 汽车电动充气泵方案电路设计
  • 计算机毕业设计springboot学生作业管理系统 基于Spring Boot的在线作业提交与评阅平台 高校课程作业数字化管理平台的设计与实现
  • php python+vue商品管理系统开题报告文献综述
  • 计算机毕业设计springboot音乐推荐系统 基于协同过滤算法的个性化音乐推送平台开发 Spring Boot驱动的智能化歌曲推荐服务平台构建
  • GPS定位方案与HC32L130MCU应用全解析
  • php python+vue大学校排课管理信息系统设计开题报告
  • php python+vue婚庆礼品网站 开题报告
  • 实际项目这里要接硬件ADC采样,仿真用数学模型代替
  • 11个AI工具助力毕业论文写作,覆盖多学科需求
  • 小程序毕设选题推荐:基于微信小程序的博物馆文创系统的设计与实现基于springboot+小程序的温州博物馆小程序的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 跨学科必备:11款AI论文写作辅助网站推荐
  • 掌握SEO艺术:利用长尾关键词全面提升网站优化效果
  • php python+vue员工签到管理系统毕设开题报告