|
|
|
|
# 修改记录
|
|
|
|
|
|
|
|
|
|
## 2025年修改记录
|
|
|
|
|
|
|
|
|
|
### 修复 NodeCanvasPageView 中的编译错误
|
|
|
|
|
- **日期**: 2025年1月10日
|
|
|
|
|
- **问题**:
|
|
|
|
|
- `ItemContainerGenerator` 未包含 `ContainerFromItem` 的定义
|
|
|
|
|
- `DispatcherPriority` 未包含 `Layout` 的定义
|
|
|
|
|
- **修复内容**:
|
|
|
|
|
1. 移除了不存在的 `ItemContainerGenerator.ContainerFromItem()` 方法调用
|
|
|
|
|
2. 改用 `GetVisualDescendants()` 方法遍历视觉树来查找对应的 `ContentControl` 容器
|
|
|
|
|
3. 将 `DispatcherPriority.Layout` 改为 `DispatcherPriority.Normal`(Avalonia 中不存在 Layout 枚举值)
|
|
|
|
|
- **技术说明**:
|
|
|
|
|
- 在 Avalonia 中,`ItemContainerGenerator` 没有 `ContainerFromItem` 方法
|
|
|
|
|
- 通过遍历视觉树(`GetVisualDescendants()`)来查找对应的容器是更可靠的方法
|
|
|
|
|
- `DispatcherPriority` 枚举在 Avalonia 中可用的值包括:`Invalid`, `Inactive`, `SystemIdle`, `ApplicationIdle`, `ContextIdle`, `Background`, `Input`, `Loaded`, `Render`, `Normal`, `Send`
|
|
|
|
|
- **修改文件**:
|
|
|
|
|
- `AuroraDesk.Presentation/Views/Pages/NodeCanvasPageView.axaml.cs` - 修复容器查找方法和 DispatcherPriority 枚举值
|
|
|
|
|
|
|
|
|
|
### 调整 UdpServerPageView 客户端列表折叠按钮位置到左侧
|
|
|
|
|
- **日期**: 2025年1月10日
|
|
|
|
|
- **修改内容**: 将客户端列表的折叠按钮从标题栏中间移到最左侧,使用三列 Grid 布局
|
|
|
|
|
- **布局改进**:
|
|
|
|
|
- 使用 `Grid` 三列布局:`ColumnDefinitions="Auto,*,Auto"`
|
|
|
|
|
- 第一列:折叠按钮(左侧,固定宽度 40px,左侧内边距 16px)
|
|
|
|
|
- 第二列:标题内容(中间,自适应宽度,包含图标、文字和徽章)
|
|
|
|
|
- 第三列:清空按钮(右侧,固定宽度)
|
|
|
|
|
- **视觉效果**: 折叠按钮现在独立显示在左侧,布局更加清晰,符合常见的折叠面板设计模式
|
|
|
|
|
- **修改文件**:
|
|
|
|
|
- `AuroraDesk.Presentation/Views/Pages/UdpServerPageView.axaml` - 调整折叠按钮布局位置
|
|
|
|
|
|
|
|
|
|
### 优化 UdpServerPageView 布局,使客户端列表和接收消息区域铺满剩余空间
|
|
|
|
|
- **日期**: 2025年1月10日
|
|
|
|
|
- **修改内容**: 为客户端列表和接收消息区域的 Border、Grid、Expander 和 ScrollViewer 添加 `VerticalAlignment="Stretch"` 属性,使它们能够铺满剩余的垂直空间
|
|
|
|
|
- **改进点**:
|
|
|
|
|
- 客户端列表 Border 添加了 `VerticalAlignment="Stretch"`
|
|
|
|
|
- 客户端列表内部 Grid 添加了 `VerticalAlignment="Stretch"`
|
|
|
|
|
- 客户端列表 Expander 添加了 `VerticalAlignment="Stretch"`
|
|
|
|
|
- 客户端列表 ScrollViewer 添加了 `VerticalAlignment="Stretch"`
|
|
|
|
|
- 接收消息区域 Border 添加了 `VerticalAlignment="Stretch"`
|
|
|
|
|
- 接收消息区域内部 Grid 添加了 `VerticalAlignment="Stretch"`
|
|
|
|
|
- 接收消息区域 ScrollViewer 添加了 `VerticalAlignment="Stretch"`
|
|
|
|
|
- **效果**: 两个区域现在能够充分利用可用的垂直空间,提供更好的用户体验
|
|
|
|
|
- **修改文件**:
|
|
|
|
|
- `AuroraDesk.Presentation/Views/Pages/UdpServerPageView.axaml` - 添加垂直对齐属性
|
|
|
|
|
|
|
|
|
|
### 修复 UdpServerPageView 中 Border 控件无效属性错误
|
|
|
|
|
- **日期**: 2025年1月10日
|
|
|
|
|
- **问题**: Border 控件不支持 `HorizontalContentAlignment` 属性,导致编译错误 AVLN2000
|
|
|
|
|
- **修复内容**: 移除了第 285 行 Border 控件上的无效属性 `HorizontalContentAlignment="Stretch"`
|
|
|
|
|
- **说明**:
|
|
|
|
|
- `Border` 控件在 Avalonia 中不支持 `HorizontalContentAlignment` 属性
|
|
|
|
|
- 使用 `HorizontalAlignment="Stretch"` 即可实现 Border 本身的对齐
|
|
|
|
|
- 内容对齐可以通过内部容器(如 Grid)的 `HorizontalAlignment` 属性控制
|
|
|
|
|
- **修改文件**:
|
|
|
|
|
- `AuroraDesk.Presentation/Views/Pages/UdpServerPageView.axaml` - 移除无效属性
|
|
|
|
|
|
|
|
|
|
### 重构 UdpServerPageView 布局为两行结构并支持折叠
|
|
|
|
|
- **日期**: 2025年1月10日
|
|
|
|
|
- **修改内容**: 重构 UDP 服务端页面视图为两行布局,客户端列表支持折叠功能
|
|
|
|
|
- **布局结构**:
|
|
|
|
|
- 第一行:服务器控制(监听端口、启动/停止按钮,横向排列)
|
|
|
|
|
- 第二行:左右分栏布局
|
|
|
|
|
- 左边(1/3):客户端列表区域(使用 Expander 支持折叠,显示连接的客户端信息)
|
|
|
|
|
- 右边(2/3):接收消息区域(显示接收到的消息列表)
|
|
|
|
|
- **改进点**:
|
|
|
|
|
- 配置区域改为横向布局,端口输入和启动/停止按钮在同一行
|
|
|
|
|
- 客户端列表和接收消息区域采用左右分栏,右边接收消息区域占据 2/3 宽度
|
|
|
|
|
- 客户端列表使用 Expander 控件,支持折叠/展开功能
|
|
|
|
|
- 所有 Border 和 Expander 添加了 HorizontalAlignment="Stretch" 确保占满宽度
|
|
|
|
|
- 保持了原有的功能和样式风格
|
|
|
|
|
- **修改文件**:
|
|
|
|
|
- `AuroraDesk.Presentation/Views/Pages/UdpServerPageView.axaml` - 重构为两行布局,客户端列表支持折叠
|
|
|
|
|
|
|
|
|
|
### 重构 UdpClientPageView 布局为两行结构
|
|
|
|
|
- **日期**: 2025年1月10日
|
|
|
|
|
- **修改内容**: 重构 UDP 客户端页面视图,将主要内容区域改为两行布局
|
|
|
|
|
- **布局结构**:
|
|
|
|
|
- 第一行:连接配置(IP、端口、本地端口、连接/断开按钮,横向排列)
|
|
|
|
|
- 第二行:左右分栏布局
|
|
|
|
|
- 左边(1/3):已发送消息区域(包含消息列表和输入框)
|
|
|
|
|
- 右边(2/3):接收消息区域(显示接收到的消息列表)
|
|
|
|
|
- **改进点**:
|
|
|
|
|
- 配置区域保持横向布局,所有配置项和按钮在同一行
|
|
|
|
|
- 已发送消息和接收消息区域采用左右分栏,右边接收消息区域占据 2/3 宽度
|
|
|
|
|
- 已发送消息区域整合了消息列表和输入框,布局更紧凑
|
|
|
|
|
- 保持了原有的功能和样式风格
|
|
|
|
|
- **修改文件**:
|
|
|
|
|
- `AuroraDesk.Presentation/Views/Pages/UdpClientPageView.axaml` - 重构为两行布局,左右分栏
|
|
|
|
|
|
|
|
|
|
### 实现 UDP 客户端和服务端功能
|
|
|
|
|
- **日期**: 2025年1月10日
|
|
|
|
|
- **修改内容**: 实现 UDP 客户端和服务端两个视图页面,并添加到导航菜单中
|
|
|
|
|
- **功能实现**:
|
|
|
|
|
- ✅ 创建 UDP 客户端 ViewModel (`UdpClientPageViewModel.cs`)
|
|
|
|
|
- ✅ 创建 UDP 服务端 ViewModel (`UdpServerPageViewModel.cs`)
|
|
|
|
|
- ✅ 创建 UDP 客户端 View (`UdpClientPageView.axaml` 和 `.axaml.cs`)
|
|
|
|
|
- ✅ 创建 UDP 服务端 View (`UdpServerPageView.axaml` 和 `.axaml.cs`)
|
|
|
|
|
- ✅ 在 PageViewModelFactory 中注册两个页面
|
|
|
|
|
- ✅ 在 ServiceCollectionExtensions 中注册 ViewModel
|
|
|
|
|
- ✅ 在 NavigationService 中添加导航项(UDP 工具分组)
|
|
|
|
|
- **UDP 客户端功能**:
|
|
|
|
|
- 配置服务器 IP 和端口
|
|
|
|
|
- 连接/断开服务器
|
|
|
|
|
- 发送消息到服务器
|
|
|
|
|
- 接收服务器响应
|
|
|
|
|
- 显示已发送和接收的消息列表
|
|
|
|
|
- 清空消息列表
|
|
|
|
|
- **UDP 服务端功能**:
|
|
|
|
|
- 配置监听端口
|
|
|
|
|
- 启动/停止监听
|
|
|
|
|
- 接收客户端消息
|
|
|
|
|
- 自动回复客户端(可选)
|
|
|
|
|
- 显示接收到的消息列表
|
|
|
|
|
- 显示连接的客户端列表(IP:端口、消息数、首次/最后连接时间)
|
|
|
|
|
- 清空消息和客户端列表
|
|
|
|
|
- **修改文件**:
|
|
|
|
|
- `AuroraDesk.Presentation/ViewModels/Pages/UdpClientPageViewModel.cs` - UDP 客户端 ViewModel
|
|
|
|
|
- `AuroraDesk.Presentation/ViewModels/Pages/UdpServerPageViewModel.cs` - UDP 服务端 ViewModel
|
|
|
|
|
- `AuroraDesk.Presentation/Views/Pages/UdpClientPageView.axaml` - UDP 客户端视图
|
|
|
|
|
- `AuroraDesk.Presentation/Views/Pages/UdpClientPageView.axaml.cs` - UDP 客户端视图代码
|
|
|
|
|
- `AuroraDesk.Presentation/Views/Pages/UdpServerPageView.axaml` - UDP 服务端视图
|
|
|
|
|
- `AuroraDesk.Presentation/Views/Pages/UdpServerPageView.axaml.cs` - UDP 服务端视图代码
|
|
|
|
|
- `AuroraDesk.Presentation/Services/PageViewModelFactory.cs` - 注册页面工厂方法
|
|
|
|
|
- `AuroraDesk.Presentation/Extensions/ServiceCollectionExtensions.cs` - 注册 ViewModel 服务
|
|
|
|
|
- `AuroraDesk.Infrastructure/Services/NavigationService.cs` - 添加导航项
|
|
|
|
|
- **技术实现**:
|
|
|
|
|
- 遵循 ReactiveUI + MVVM 模式
|
|
|
|
|
- 使用 ReactiveCommand 实现命令绑定
|
|
|
|
|
- 使用 ObservableCollection 管理消息列表
|
|
|
|
|
- 异步网络操作(UDP 发送/接收)
|
|
|
|
|
- 后台任务处理消息接收(避免阻塞 UI)
|
|
|
|
|
- 资源清理(Dispose 模式)
|
|
|
|
|
- 使用 Dispatcher.UIThread 确保 UI 线程安全更新
|
|
|
|
|
- **架构遵循**:
|
|
|
|
|
- ✅ 整洁架构(Clean Architecture)
|
|
|
|
|
- ✅ ReactiveUI 响应式编程模式
|
|
|
|
|
- ✅ MVVM 模式
|
|
|
|
|
- ✅ 依赖注入(DI)
|
|
|
|
|
- ✅ 服务层分离(ViewModel 只处理业务逻辑,View 只负责 UI 展示)
|
|
|
|
|
- **导航结构**:
|
|
|
|
|
- UDP 工具(父级导航项,IconType.Signal)
|
|
|
|
|
- UDP 客户端(IconType.ArrowRight)
|
|
|
|
|
- UDP 服务端 (IconType.Server)
|
|
|
|
|
- **UI 特性**:
|
|
|
|
|
- 现代化的界面设计(圆角、阴影、颜色区分)
|
|
|
|
|
- 实时状态显示
|
|
|
|
|
- 消息时间戳
|
|
|
|
|
- 客户端信息详细展示
|
|
|
|
|
- 响应式布局
|
|
|
|
|
- **测试建议**:
|
|
|
|
|
- 启动 UDP 服务端,监听端口 8080
|
|
|
|
|
- 启动 UDP 客户端,连接到 127.0.0.1:8080
|
|
|
|
|
- 发送测试消息,验证双向通信
|
|
|
|
|
- 测试多客户端连接场景
|
|
|
|
|
- 测试异常情况(端口占用、网络错误等)
|