Skip to content

WPF 上位机 AI 开发流程

这份文档用于指导你把 WPF 上位机项目拆成 AI 能稳定处理的任务。

重点不是让用户一开始就说清楚 XAML、ViewModel、Command、绑定字段,而是让用户先描述业务目标、界面现象和期望效果,再让 AI 反推页面结构、控件、绑定、命令、服务和验证点。

1. 一个核心原则:用户说目标,AI 拆细节

实际使用时,用户通常不会这样说:

text
请修改 MainWindow.xaml 和 MainViewModel.cs,把 ConnectCommand 改成 DisconnectCommand,并同步更新绑定字段。

用户更可能这样说:

text
我想把主界面的连接按钮改成关闭按钮。
连接成功后显示关闭,点击关闭后断开设备,再恢复成连接。

这才是正常使用方式。

AI 应该先根据这个目标判断:

  1. 这属于新页面、页面修改、状态逻辑修改,还是通信流程修改。
  2. 可能涉及哪些页面区域、按钮、状态字段和命令。
  3. 可能需要哪些文件或截图。
  4. 哪些信息不够,需要继续追问。
  5. 怎样做最小修改和回归验证。

用户不需要一开始就准确知道文件名、控件名、绑定字段和 Command 名称。知道当然更好,不知道也可以先描述目标。

2. 为什么推荐 WPF

WPF 比 WinForm 更适合让 AI 辅助开发,主要原因有:

  1. XAML 页面结构是文本,AI 更容易阅读和修改。
  2. 页面布局、控件、绑定关系比较清晰,适合做局部修改。
  3. 数据绑定适合把界面和逻辑分开,减少代码互相缠绕。
  4. MVVM 模式适合把任务拆成 View、ViewModel、Model、Service。
  5. 复杂界面、状态刷新、参数配置、表格和曲线更容易组织。

WinForm 也可以使用 AI 辅助,但复杂布局和设计器生成代码更容易被误改。对于新项目,优先建议 WPF。

3. 推荐项目结构

项目结构不是第一步。

第一步应该先把零散需求整理成第一版需求方案,确认软件要解决什么问题、谁使用、在哪里使用、大概有哪些核心功能。只有第一版方案基本清楚后,才适合继续细化页面、通信、数据和项目结构。

如果项目还没有明确用户、现场、痛点、成功标准和非目标,先回到 10-问题定义与用户场景.md。如果需求方案已经确认,但准备进入技术设计或代码实现,先用 12-AI开发质量门.md 做一次检查。

当需求已经明确后,新项目可以按下面结构组织:

text
项目名/
├─ Models/
├─ ViewModels/
├─ Views/
├─ Services/
├─ Communication/
├─ Storage/
├─ Utils/
├─ Logs/
└─ Configs/

各目录职责:

目录职责
Models数据模型,例如测试结果、设备状态、报警记录
ViewModels页面状态、按钮命令、数据绑定、业务协调
ViewsXAML 页面和窗口
Services业务服务,例如测试流程、报警服务、配置服务
Communication串口、TCP、协议解析、重连、心跳
StorageSQLite、CSV、Excel、数据查询和导出
Utils通用工具,例如 CRC、时间格式、文件工具
Logs日志写入、日志查看、日志清理
Configs参数配置、默认配置、导入导出

4. AI 开发标准流程

推荐按这个顺序让 AI 处理:

  1. 先把零散需求整理成完整需求文档。
  2. 再让 AI 根据需求文档拆业务流程、页面、通信、数据、日志、报警和验收标准。
  3. 再根据模块边界选择项目结构和技术框架。
  4. 再设计页面布局和交互流程。
  5. 再让 AI 推导需要的 Model、ViewModel、Service、Command 和绑定字段。
  6. 再设计通信逻辑和协议解析。
  7. 再设计数据存储和日志。
  8. 重要技术选择用 22-架构决策ADR模板.md 记录理由。
  9. 最后生成测试清单和验收标准。

不要一开始就说“帮我写一个完整上位机”。更好的说法是:

text
请先不要写代码。下面是我零散整理的上位机需求,请先帮我整理成一份第一版需求方案。

请输出:
1. 项目目标。
2. 使用场景和操作流程。
3. 页面清单和每个页面的功能。
4. 通信需求。
5. 数据保存需求。
6. 日志、报警和异常处理。
7. 第一阶段最小可运行版本。
8. 还缺哪些关键信息。

零散需求如下:
【粘贴你的需求】

需求方案确认后,再让 AI 继续:

text
请根据上面的需求方案,继续帮我设计 WPF 上位机的技术方案。

请输出:
1. 推荐项目结构。
2. 页面清单和每个页面的区域布局。
3. 每个页面需要显示的数据和操作动作。
4. AI 建议的控件、状态字段、按钮命令和绑定关系。
5. Model、ViewModel、Service、通信模块、数据存储模块的职责。
6. 开发顺序和测试验收点。

先给方案,不要直接写完整代码。

5. 新建页面流程

新建页面时,用户不需要先列出完整控件清单、绑定字段和按钮命令。

用户先提供这些业务信息即可:

用户需要说明示例
页面用途参数配置页、实时数据页、报警记录页
谁使用操作员、调试工程师、测试人员
主要任务设置参数、查看曲线、查询历史、确认报警
需要看到什么设备状态、实时数值、测试结果、报警信息
需要操作什么连接设备、开始测试、保存参数、导出数据
异常怎么提示连接失败、参数错误、保存失败、数据超限
验收标准怎么判断这个页面可用

AI 应该输出这些技术细节:

AI 应该设计说明
页面区域划分顶部状态区、左侧参数区、中间数据区、底部日志区
控件建议TextBox、ComboBox、Button、DataGrid、Chart、ListBox 等
状态字段IsConnected、CurrentStatus、AlarmCount、TestResult 等
按钮命令Connect、Disconnect、Start、Stop、Save、Export 等
数据绑定哪些显示内容来自哪些状态字段或集合
服务依赖通信服务、配置服务、数据服务、日志服务
验收点页面能打开、状态能刷新、按钮可用、异常有提示

发给 AI 的模板:

text
请你作为 C# WPF 上位机界面设计助手,帮我设计一个新页面。

我先用业务语言描述需求,不确定具体控件、绑定字段和 Command 名称,请你帮我设计。

页面用途:
使用人员:
主要操作流程:
需要显示的信息:
需要执行的操作:
异常提示要求:
验收标准:

请先输出设计方案,不要直接写完整代码。

请输出:
1. 页面区域布局。
2. 建议使用的控件。
3. 需要的状态字段。
4. 需要的按钮命令。
5. ViewModel 职责。
6. 可能依赖的 Service。
7. 需要我补充确认的问题。
8. 验收检查点。

6. 修改页面流程

修改已有页面时,不要一开始就要求用户准确提供 XAML 和 ViewModel。

先让用户描述:

  1. 想改哪个页面或哪个区域。
  2. 当前是什么样。
  3. 希望改成什么样。
  4. 哪些功能不要受影响。
  5. 是否有当前界面截图或运行截图。

AI 的第一步不是直接改代码,而是先判断:

  1. 这可能涉及 UI、状态字段、按钮命令、业务服务还是通信流程。
  2. 需要查看哪些文件或截图。
  3. 是否可以只做局部修改。
  4. 修改后要验证哪些点。

普通使用模板:

text
我想修改一个已有 WPF 上位机页面。

请先不要写代码,也不要重写整个页面。

修改目标:
【例如:主界面连接成功后,把“连接”按钮变成“关闭”,点击关闭后断开设备】

当前现象:
【现在界面和操作是什么样】

期望效果:
【希望改完后是什么样】

不希望影响:
【例如:不要影响数据采集、日志显示、参数保存】

我暂时不确定具体要改哪个 XAML、ViewModel 或 Command。

请先输出:
1. 这个修改可能涉及哪些页面区域、状态字段、按钮命令和服务。
2. 需要我补充哪些截图、项目结构或代码文件。
3. 最小修改方案。
4. 风险点。
5. 回归验证清单。

进阶补充模板:

text
下面是 AI 要求我补充的相关文件或片段。

请只针对本次目标做最小修改,不要重写整个页面,不要顺手重构。

修改目标:
【再次写清楚目标】

相关页面代码:
【粘贴 XAML 或页面代码】

相关逻辑代码:
【粘贴 ViewModel / 事件处理 / Service 片段】

请输出:
1. 当前逻辑判断。
2. 最小修改点。
3. 每处修改原因。
4. 可能影响范围。
5. 修改后验证步骤。

修改页面时的注意事项:

  1. 先说目标和现象,不要强行猜文件名。
  2. 信息不够时,让 AI 反问需要哪些材料。
  3. 不要让 AI 重写整个页面。
  4. 不要让 AI 顺手改样式体系。
  5. 修改按钮状态时,要确认连接、断开、异常、重连等状态。
  6. 修改数据显示时,要确认数据来源、刷新频率和异常显示。

7. MVVM 协作模板

这一节是进阶内容。普通用户不需要一开始就填写完整 Model、ViewModel、Command。可以先用前面的业务目标模板,让 AI 反推这些内容。

Model 设计

text
请根据下面业务对象设计 Model。只设计数据字段,不写界面逻辑。

业务对象:
这个对象表示什么:
需要显示哪些信息:
需要保存哪些信息:
哪些字段需要校验:

请你推导字段名、字段类型和校验规则。

ViewModel 设计

text
请根据下面页面业务需求设计 ViewModel。

页面用途:
需要显示的状态:
需要操作的动作:
涉及的数据列表:
需要调用的服务:
异常提示方式:

请你推导属性清单、命令清单、方法清单和验证点。

Command 设计

text
请根据下面按钮业务目标设计 WPF Command。

按钮业务目标:
点击前需要满足什么条件:
点击后执行什么动作:
成功后界面怎么变化:
失败后怎么提示:
是否可能耗时:

请你推导 Command 名称、CanExecute 条件、执行流程、异常处理和验证点。

Service 设计

text
请把下面业务逻辑设计成 Service,不要写在 ViewModel 里。

业务目标:
输入信息:
输出结果:
异常情况:
需要记录哪些日志:
需要验证哪些场景:

请你推导 Service 职责、方法清单、依赖关系和测试点。

8. 常见页面模板

页面用户通常怎么描述AI 应该补齐什么验收点
主界面我要看到设备状态,能连接、开始、停止状态区、按钮区、结果区、日志区、连接状态字段能连接、能断开、状态刷新正常
参数配置页我要设置通信参数和测试参数参数分组、输入控件、保存/加载命令、校验规则能保存、能加载、错误参数有提示
实时数据页我要看实时数值和曲线数值卡片、表格、曲线、刷新策略数据刷新不卡顿、显示正确
历史数据页我要按时间查询和导出结果查询条件、结果表格、导出命令查询正确、导出文件可打开
报警记录页我要看报警、确认报警、查历史报警报警列表、等级、确认状态、恢复状态报警能记录、能查询、状态正确
日志窗口我要看通信日志和错误日志日志等级、筛选、清空、保存日志能追加、能清空、能保存
测试流程页我要按步骤执行测试并显示结果步骤列表、当前步骤、进度、结果判定步骤状态正确、异常能停止或重试

上位机 AI 开发工作流资料包 | 閑魚:別來無恙 | QQ群:1016188499