You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
8.7 KiB
8.7 KiB
修改记录
2025年修改记录
修复 NodeCanvasPageView 中的编译错误
- 日期: 2025年1月10日
- 问题:
ItemContainerGenerator未包含ContainerFromItem的定义DispatcherPriority未包含Layout的定义
- 修复内容:
- 移除了不存在的
ItemContainerGenerator.ContainerFromItem()方法调用 - 改用
GetVisualDescendants()方法遍历视觉树来查找对应的ContentControl容器 - 将
DispatcherPriority.Layout改为DispatcherPriority.Normal(Avalonia 中不存在 Layout 枚举值)
- 移除了不存在的
- 技术说明:
- 在 Avalonia 中,
ItemContainerGenerator没有ContainerFromItem方法 - 通过遍历视觉树(
GetVisualDescendants())来查找对应的容器是更可靠的方法 DispatcherPriority枚举在 Avalonia 中可用的值包括:Invalid,Inactive,SystemIdle,ApplicationIdle,ContextIdle,Background,Input,Loaded,Render,Normal,Send
- 在 Avalonia 中,
- 修改文件:
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"
- 客户端列表 Border 添加了
- 效果: 两个区域现在能够充分利用可用的垂直空间,提供更好的用户体验
- 修改文件:
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 客户端 ViewModel (
- UDP 客户端功能:
- 配置服务器 IP 和端口
- 连接/断开服务器
- 发送消息到服务器
- 接收服务器响应
- 显示已发送和接收的消息列表
- 清空消息列表
- UDP 服务端功能:
- 配置监听端口
- 启动/停止监听
- 接收客户端消息
- 自动回复客户端(可选)
- 显示接收到的消息列表
- 显示连接的客户端列表(IP:端口、消息数、首次/最后连接时间)
- 清空消息和客户端列表
- 修改文件:
AuroraDesk.Presentation/ViewModels/Pages/UdpClientPageViewModel.cs- UDP 客户端 ViewModelAuroraDesk.Presentation/ViewModels/Pages/UdpServerPageViewModel.cs- UDP 服务端 ViewModelAuroraDesk.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)
- UDP 工具(父级导航项,IconType.Signal)
- UI 特性:
- 现代化的界面设计(圆角、阴影、颜色区分)
- 实时状态显示
- 消息时间戳
- 客户端信息详细展示
- 响应式布局
- 测试建议:
- 启动 UDP 服务端,监听端口 8080
- 启动 UDP 客户端,连接到 127.0.0.1:8080
- 发送测试消息,验证双向通信
- 测试多客户端连接场景
- 测试异常情况(端口占用、网络错误等)