using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using PersonalToolBox.Models; using PersonalToolBox.Services; namespace PersonalToolBox.ViewModels; /// /// 分类编辑窗口 ViewModel,管理添加/编辑分类的交互逻辑 /// public partial class CategoryEditViewModel : ObservableObject { private readonly IDataService _dataService; private readonly ILogService _logService; private readonly Category? _editingCategory; [ObservableProperty] private string _windowTitle = "添加分类"; [ObservableProperty] private string _name = string.Empty; public Action? CloseAction { get; set; } public bool Saved { get; private set; } public CategoryEditViewModel(IDataService dataService, ILogService logService, Category? categoryToEdit = null) { _dataService = dataService; _logService = logService; _editingCategory = categoryToEdit; if (categoryToEdit != null) { WindowTitle = "编辑分类"; Name = categoryToEdit.Name; } } [RelayCommand] private void Save() { try { if (string.IsNullOrWhiteSpace(Name)) { _logService.Warning("分类名称不能为空"); return; } if (_editingCategory != null) { _editingCategory.Name = Name.Trim(); _logService.Info($"已更新分类: {Name.Trim()}"); } else { _dataService.Config.Categories.Add(new Category { Id = Guid.NewGuid().ToString(), Name = Name.Trim() }); _logService.Info($"已添加分类: {Name.Trim()}"); } _dataService.Save(); Saved = true; CloseAction?.Invoke(true); } catch (Exception ex) { _logService.Error($"保存分类失败: {ex.Message}"); } } [RelayCommand] private void Cancel() { CloseAction?.Invoke(false); } }