项目概述

本文将详细介绍如何使用 C# 和 CommunityToolkit.Mvvm 框架开发一个功能完整的命令行 Todo 应用。我们的应用将支持以下核心功能:

  • 添加待办事项
  • 删除待办事项
  • 标记待办事项为完成/未完成
  • 按优先级排序
  • 持久化存储
  • 搜索和过滤待办事项

通过这个例子基本可能了解CommunityToolkit.Mvvm机制了。

项目准备

安装必要的 NuGet 包 

dotnet add package CommunityToolkit.Mvvm
  • 1.

项目结构 

AppTodo/
├── Models/
│   └── TodoItem.cs
├── ViewModels/
│   └── TodoViewModel.cs
├── Services/
│   └── TodoService.cs
└── Program.cs
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

模型定义 (Models/TodoItem.cs) 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;

namespace AppTodo.Models
{
    // 将优先级枚举移到类外部  
    publicenum Priority
    {
        Low,
        Medium,
        High,
        Urgent
    }

    // 待办事项模型,使用 ObservableObject 支持属性变更通知  
    public partial class TodoItem : ObservableObject
    {
        [ObservableProperty]
        private Guid _id;

        [ObservableProperty]
        privatestring _title;

        [ObservableProperty]
        privatestring _description;

        [ObservableProperty]
        privatebool _isCompleted;

        [ObservableProperty]
        private DateTime _createdAt;

        [ObservableProperty]
        private DateTime? _completedAt;

        [ObservableProperty]
        private Priority _priority;

        public TodoItem()
        {
            Id = Guid.NewGuid();
            CreatedAt = DateTime.Now;
            Priority = Priority.Medium; // 设置默认优先级  
        }

    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.