Files

3.7 KiB
Raw Permalink Blame History

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,但统一契约和共享数据结构属于本模块的重要背景。