From 499379e20beb82e24e9c2afc0fe99645ac987148 Mon Sep 17 00:00:00 2001 From: chfei Date: Wed, 28 Oct 2026 16:48:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0DataGridEx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .agents/skills/datagridex/SKILL.md | 62 ++ .agents/skills/datagridex/references/usage.md | 97 ++ .../Commands/AsyncDelegateCommand.cs | 3 +- .../AssemblyInfo.cs | 2 +- .../DataGridEx/DataGridEx.ImageLoading.cs | 100 ++ .../Controls/DataGridEx/DataGridEx.Options.cs | 52 ++ .../DataGridEx/DataGridEx.Workbench.cs | 207 +++++ .../Controls/DataGridEx/DataGridEx.cs | 330 +++++++ .../Controls/DataGridEx/DataGridEx.xaml | 875 ++++++++++++++++++ .../DataGridEx/DataGridExImageColumn.cs | 169 ++++ .../Resources/FrameworkTheme.xaml | 6 + .../Store.Management.Framework.csproj | 1 + .../Themes/Generic.xaml | 5 + Source/Store.Management/App.xaml | 2 + Source/Store.Management/App.xaml.cs | 11 + Source/Store.Management/MainWindow.xaml | 8 +- Source/Store.Management/MainWindow.xaml.cs | 10 +- .../Store.Management/Store.Management.csproj | 4 + .../ViewModels/DataGridTestViewModel.cs | 174 ++++ .../Views/DataGridTestView.xaml | 198 ++++ .../Views/DataGridTestView.xaml.cs | 8 + .../Program.cs | 354 +++++++ ...tore.Management.DataGrid.SmokeTests.csproj | 10 + 23 files changed, 2682 insertions(+), 6 deletions(-) create mode 100644 .agents/skills/datagridex/SKILL.md create mode 100644 .agents/skills/datagridex/references/usage.md create mode 100644 Source/Store.Management.Framework/Controls/DataGridEx/DataGridEx.ImageLoading.cs create mode 100644 Source/Store.Management.Framework/Controls/DataGridEx/DataGridEx.Options.cs create mode 100644 Source/Store.Management.Framework/Controls/DataGridEx/DataGridEx.Workbench.cs create mode 100644 Source/Store.Management.Framework/Controls/DataGridEx/DataGridEx.cs create mode 100644 Source/Store.Management.Framework/Controls/DataGridEx/DataGridEx.xaml create mode 100644 Source/Store.Management.Framework/Controls/DataGridEx/DataGridExImageColumn.cs create mode 100644 Source/Store.Management.Framework/Resources/FrameworkTheme.xaml create mode 100644 Source/Store.Management.Framework/Themes/Generic.xaml create mode 100644 Source/Store.Management/ViewModels/DataGridTestViewModel.cs create mode 100644 Source/Store.Management/Views/DataGridTestView.xaml create mode 100644 Source/Store.Management/Views/DataGridTestView.xaml.cs create mode 100644 Tests/Store.Management.DataGrid.SmokeTests/Program.cs create mode 100644 Tests/Store.Management.DataGrid.SmokeTests/Store.Management.DataGrid.SmokeTests.csproj diff --git a/.agents/skills/datagridex/SKILL.md b/.agents/skills/datagridex/SKILL.md new file mode 100644 index 0000000..79682a1 --- /dev/null +++ b/.agents/skills/datagridex/SKILL.md @@ -0,0 +1,62 @@ +--- +name: datagridex +description: DataGridEx WPF 表格控件的能力与用法,涵盖分页、行选择、序号、列显隐、自定义操作栏与分页栏、加载动画、排序和图片列。需要了解或配置 DataGridEx 时使用。 +--- + +# DataGridEx + +DataGridEx 继承 WPF DataGrid,提供以下能力。属性默认值和配置示例见 [references/usage.md](references/usage.md)。 + +## 行选择与序号 + +- 行头复选框与独立序号列,可分别显示或隐藏。 +- 表头支持全选、未选和部分选中的三态显示;全选范围是当前 ItemsSource/视图。 +- 点击行尾空白可选中对应行;支持行头点击切换选择、可选的右键选中和行菜单。 +- SelectedItems 支持绑定可增删集合,集合内增删与表格选择双向同步。使用 OneWay 绑定集合引用,无需属性 setter;不支持只读或固定大小集合。 +- 序号自动创建,按当前显示顺序和分页偏移计算,排序与行回收后更新。 +- 选中行背景与前景可配置。 + +## 分页 + +- 首页、上一页、下一页、末页、页大小选择、当前页和总记录数。 +- PageIndex、PageSize 支持绑定;翻页通过 PageChangedCommand 发出 DataGridPageRequest(PageIndex, PageSize)。 +- 换页或改变页大小清空选择;改变页大小回到第一页,总数减少时自动调整到有效页码。 +- 调用方提供当前页数据和总数;控件不请求数据,也不再次切分 ItemsSource。 +- ShowPagination 控制分页栏显隐。隐藏时仍保留分页状态;不分页时保持 PageIndex=1。 + +## 列与排序 + +- 支持原生 DataGrid 列类型和自定义模板列,列放在 DataGridEx.Columns 中。 +- 内置列设置面板,勾选后立即显示或隐藏列。 +- CanHideColumn=False 可将业务列设为固定显示;复选框与序号使用各自开关。 +- 列显示设置不持久化,没有额外的右侧冻结实现。 +- 支持表头排序,排序图标位于列右侧;默认仅对当前数据源排序。 +- 服务端全量排序由调用方处理 Sorting 事件并重新查询。 + +## 自定义内容 + +- ShowToolbar 控制操作栏显隐,ShowColumnSettings 控制列设置按钮。 +- ToolbarContent 自定义操作栏中间区域,保留选择提示和列设置按钮。 +- PaginationContent 替换整个分页栏;未设置或为 null 时使用默认分页栏。 +- 两个内容槽均继承调用方 DataContext,可放置按钮、统计文字和业务布局。 + +## 加载与空数据 + +- IsLoading 控制加载遮罩及不确定进度动画,LoadingText 配置提示文字。 +- 加载期间禁用表格、操作栏和分页栏,结束后恢复;不控制表格外部控件。 +- NoDataTips 配置空数据提示,IsActive 可抑制空数据提示,与 IsLoading 分开控制。 +- 加载状态由调用方设置,控件不推断请求开始、完成或失败。 + +## 图片列与虚拟化 + +- DataGridExImageColumn 支持图片地址绑定、占位图绑定及 ElementStyle。 +- 默认图片尺寸 58×58,Stretch=Uniform。 +- 可见单元格按需加载图片,行回收时取消旧请求,避免旧图片覆盖新行。 +- 支持图片缓存,以及拖动滚动条期间暂停图片加载、停止后恢复。 +- 启用行/列虚拟化和容器回收。 + +## 集合视图支持 + +ItemsSource 可绑定 ICollectionView。调用方可使用独立 ListCollectionView,通过 Filter 和 Refresh 实现当前页实时筛选并保留视图排序。 + +搜索输入框、匹配规则、后台查询、异步取消和跨页全部选择不属于控件内置能力。 \ No newline at end of file diff --git a/.agents/skills/datagridex/references/usage.md b/.agents/skills/datagridex/references/usage.md new file mode 100644 index 0000000..e7ef0f5 --- /dev/null +++ b/.agents/skills/datagridex/references/usage.md @@ -0,0 +1,97 @@ +# DataGridEx 调用与属性 + +## 常用接入 + +以下绑定属性由调用方 ViewModel 提供,controls 表示 DataGridEx 所在命名空间。 + +~~~xml + + +