Files
petwash/完成对话框自动关闭功能说明.md
GukSang.Jin 9c66b6cd82
2026-03-03 16:55:02 +08:00

4.1 KiB
Raw Blame History

完成对话框自动关闭功能说明

功能概述

优化了洗护流程完成后的提示对话框实现30秒自动关闭并返回首页的功能。

实现内容

1. 新增自定义对话框

创建了 CompletionDialog 窗口,替代原有的 MessageBox.Show

文件位置:

  • PetWashControl/Views/CompletionDialog.xaml
  • PetWashControl/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. 运行测试

  1. 启动应用程序
  2. 选择套餐并开始洗护流程
  3. 等待流程完成(或使用模拟模式快速测试)
  4. 观察完成对话框:
    • 检查UI显示是否美观
    • 确认倒计时从30秒开始递减
    • 等待30秒验证自动关闭
    • 或点击"确定"按钮,验证立即关闭
  5. 确认关闭后自动返回待机首页

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秒自动关闭
  • 实时倒计时显示
  • 可手动点击确定立即关闭
  • 圆角设计、阴影效果、绿色成功图标
  • 更好的用户体验

注意事项

  1. 对话框使用 ShowDialog() 模态显示,确保用户看到完成提示
  2. 倒计时结束或点击确定后,自动执行返回首页逻辑
  3. 定时器在窗口关闭时会自动停止,避免内存泄漏
  4. 对话框设置为无边框透明背景,提供更现代的视觉效果

相关文件

  • PetWashControl/Views/CompletionDialog.xaml - 对话框UI定义
  • PetWashControl/Views/CompletionDialog.xaml.cs - 对话框逻辑实现
  • PetWashControl/ViewModels/MainViewModel.cs - 调用对话框的业务逻辑

完成时间

2026年2月27日