4.1 KiB
4.1 KiB
完成对话框自动关闭功能说明
功能概述
优化了洗护流程完成后的提示对话框,实现30秒自动关闭并返回首页的功能。
实现内容
1. 新增自定义对话框
创建了 CompletionDialog 窗口,替代原有的 MessageBox.Show:
文件位置:
PetWashControl/Views/CompletionDialog.xamlPetWashControl/Views/CompletionDialog.xaml.cs
功能特性:
- 美观的UI设计(圆角边框、阴影效果、绿色成功图标)
- 30秒倒计时显示
- 自动关闭功能
- 手动点击"确定"按钮立即关闭
- 关闭后自动返回待机首页
2. 对话框设计
┌─────────────────────────────────┐
│ ✓ (绿色对勾图标) │
│ │
│ 清洗完成! │
│ │
│ 感谢使用无人自动洗宠机 │
│ │
│ 30秒后自动返回首页 │
│ │
│ [ 确 定 ] │
└─────────────────────────────────┘
3. 倒计时逻辑
- 初始倒计时:30秒
- 每秒更新一次显示文本
- 倒计时结束自动关闭对话框
- 点击"确定"按钮立即停止倒计时并关闭
4. 代码修改
MainViewModel.cs - CompleteWashingAsync 方法:
// 原代码:
MessageBox.Show("清洗完成!\n\n感谢使用无人自动洗宠机", "完成",
MessageBoxButton.OK, MessageBoxImage.Information);
// 新代码:
var dialog = new Views.CompletionDialog();
dialog.ShowDialog();
测试步骤
1. 编译项目
cd PetWashControl
dotnet build
2. 运行测试
- 启动应用程序
- 选择套餐并开始洗护流程
- 等待流程完成(或使用模拟模式快速测试)
- 观察完成对话框:
- 检查UI显示是否美观
- 确认倒计时从30秒开始递减
- 等待30秒,验证自动关闭
- 或点击"确定"按钮,验证立即关闭
- 确认关闭后自动返回待机首页
3. 验证要点
- ✅ 对话框居中显示
- ✅ 倒计时文本每秒更新
- ✅ 30秒后自动关闭
- ✅ 点击"确定"立即关闭
- ✅ 关闭后返回待机界面
- ✅ 订单状态正确更新为已完成
技术实现
倒计时定时器
private DispatcherTimer _countdownTimer;
private int _remainingSeconds = 30;
private void StartCountdown()
{
_countdownTimer = new DispatcherTimer
{
Interval = TimeSpan.FromSeconds(1)
};
_countdownTimer.Tick += CountdownTimer_Tick;
_countdownTimer.Start();
}
private void CountdownTimer_Tick(object? sender, EventArgs e)
{
_remainingSeconds--;
if (_remainingSeconds > 0)
{
CountdownText.Text = $"{_remainingSeconds}秒后自动返回首页";
}
else
{
_countdownTimer.Stop();
DialogResult = true;
Close();
}
}
资源清理
protected override void OnClosed(EventArgs e)
{
_countdownTimer?.Stop();
base.OnClosed(e);
}
用户体验优化
优化前
- 使用系统默认的 MessageBox
- 需要手动点击确定
- 无倒计时提示
- UI样式单调
优化后
- 自定义美观对话框
- 30秒自动关闭
- 实时倒计时显示
- 可手动点击确定立即关闭
- 圆角设计、阴影效果、绿色成功图标
- 更好的用户体验
注意事项
- 对话框使用
ShowDialog()模态显示,确保用户看到完成提示 - 倒计时结束或点击确定后,自动执行返回首页逻辑
- 定时器在窗口关闭时会自动停止,避免内存泄漏
- 对话框设置为无边框透明背景,提供更现代的视觉效果
相关文件
PetWashControl/Views/CompletionDialog.xaml- 对话框UI定义PetWashControl/Views/CompletionDialog.xaml.cs- 对话框逻辑实现PetWashControl/ViewModels/MainViewModel.cs- 调用对话框的业务逻辑
完成时间
2026年2月27日