WPF设计器扩展性--WPF控件设计时支持基础

1、设计时支持—命名约定
设计时代码在特定元数据程序集中部署。受所有设计器支持的设计时功能在主库名称附加有“.Design”的程序集内部署。仅受 Visual Studio 支持的设计时功能在主库名称附加有“.VisualStudio.Design”的程序集内部署。
如:
SkewButtonLibrary.dll
SkewButtonLibrary.VisualStudio.Design.dll

2、设计时支持的结构---元数据
元数据
当设计工具(如 Visual Studio)打开自定义控件的程序集时,它还查找相关的设计时程序集。 特别是,设计工具查找 ProvideMetadataAttribute 程序集级特性。 在找到该特性后,设计器会在程序集内搜索实现 IProvideAttributeTable 接口的类。 设计器会在该类的 AttributeTable 属性中查询用来指定设计时行为的特性集合。

3、设计时支持的结构---功能提供者
功能提供者
功能提供程序是一个轻型类型,它为对象提供额外的设计时功能。有些功能提供程序可能仅仅提供有关子组件的信息,不需要代表设计器执行任何操作。其他功能提供程序可以向对象的设计器上下文菜单添加菜单项、创建用于大小调整或编辑操作的自定义装饰器,或者重新定义对象在设计器上的拖放。
功能提供程序是通过直接从 FeatureProvider 类派生或者从本身也是从 FeatureProvider 派生的类(如 AdornerProvider 和 ContextMenuProvider)派生来实现的。功能提供程序采用轻型设计,不应尝试在两个实例之间保存状态。
功能提供程序旨在成为扩展性的轻型实现。涉及设计器扩展性时,通常倾向于从现有的功能提供程序类派生,而不是创建新的功能连接器。功能提供程序不得保存状态,因为它们会创建和销毁多次。

4、设计时支持的结构---功能提供者
功能提供者
System.Object
Microsoft.Windows.Design.Features.FeatureProvider
Microsoft.Windows.Design.Interaction.Adapter
Microsoft.Windows.Design.Interaction.AdornerProvider
Microsoft.Windows.Design.Interaction.ContextMenuProvider
Microsoft.Windows.Design.Interaction.TaskProvider
Microsoft.Windows.Design.Model.DefaultInitializer
Microsoft.Windows.Design.Model.DesignModeValueProvider
Microsoft.Windows.Design.Model.InstanceFactory

5、设计时支持的结构---编辑模型
控件是使用可扩展应用程序标记语言 (XAML) 定义的。控件 XAML 的更新通过编辑模型ModelItem,以编程方式实现。

posted on   sduSRZ  阅读(1014)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示