3.7 KiB
AtomUI.Controls.Shared 模块概览
AtomUI.Controls.Shared 是控件共享契约和跨控件基础能力模块。它依赖 AtomUI.Core 和 AtomUI.Generator,RootNamespace 为 AtomUI.Controls。
职责
- 提供控件通用接口,例如尺寸、状态、方向、操作系统感知、Header/Content 等共享契约。
- 提供异步加载协调器,统一搜索类和展开类控件的 debounce、超时、取消、去重行为。
- 提供集合视图能力,支撑排序、分组、过滤和虚拟化上下文。
- 提供上传调度、媒体断点、WaveSpirit 等跨控件系统。
关键目录
| 目录 | 说明 |
|---|---|
AsyncLoad/ |
AsyncSearchLoadCoordinator、AsyncExpandLoadCoordinator、加载结果状态 |
Data/ListCollectionViews/ |
列表集合视图、排序、分组、过滤描述 |
Net/ |
文件上传调度与传输接口 |
MediaQuery/ |
媒体断点和响应式布局支持,规则见 响应式架构 |
WaveSpirit/ |
点击波纹/动效扩展 |
Converters/、Utils/ |
控件共享工具 |
相关专题
图片加载职责
Shared 拥有统一图片系统的完整 engine 与公共数据契约:ImageLoader.cs、ImageLoaderStore.cs、Source/Request/Result/Error/
Progress、Builder options、两级请求合并、下载/解码调度、encoded/decoded/file cache、HTTP transport、source readers、内容
校验、raster codec,以及 SVG 的安全 XML/CSS/data raster、复杂度和一致性模式验证及集中 security policy version。所有文件位于单层
src/AtomUI.Controls.Shared/ImageLoading/;不创建 Application/、Runtime/ 或 Internal/ 子目录。
该模块只依赖 Core 提供的通用 owned-service 生命周期。它不引用 AtomUI.Controls,不包含 Avatar fallback、AsyncImage Theme、
Previewer Current/Cover/Preload 策略,也不引用 Svg.Controls.Avalonia 或通过反射发现上层 codec。Controls 使用显式 Builder
调用把统一 SvgImageCodec 注册到同一个应用 loader;Shared 只向 codec 交付当前安全策略已经验证的不可变字节和 metadata。
SvgContentValidator 明确拥有三层判断:不可关闭的安全边界、应用级有界资源预算,以及默认 Compatible/可选 Strict 的格式
一致性策略。第一版两种模式只在重复 id 上不同;兼容模式仍按元素出现位置建立完整引用图,不能跳过深度、环或复杂度检查。
模式在 Application loader 构建时冻结,不进入 ImageRequestOptions,Shared 不公开 per-request 开关或任意 validator delegate。
API、文件布局与引擎规则见:
过滤专题中的部分实现位于 AtomUI.Desktop.Controls,但统一契约和共享数据结构属于本模块的重要背景。