using System; using System.Collections.Generic; using System.Linq; using LocalizationTool.Services; namespace LocalizationTool.ViewModels { /// 新增语言窗口:从语言目录选择,排除已存在的语言。 public class AddLanguageViewModel : ViewModelBase { private LanguageEntry _selected; public List Languages { get; } public LanguageEntry Selected { get => _selected; set => Set(ref _selected, value); } public bool CanConfirm => Selected != null; /// 请求关闭窗口(true = 确认)。 public event Action RequestClose; public RelayCommand ConfirmCommand { get; } public RelayCommand CancelCommand { get; } public AddLanguageViewModel(IEnumerable existingCodes) { var existing = new HashSet( (existingCodes ?? Enumerable.Empty()).Select(c => c.Trim()), System.StringComparer.OrdinalIgnoreCase); Languages = LanguageCatalog.All .Where(e => !existing.Contains(e.Code)) .ToList(); Selected = Languages.FirstOrDefault(); ConfirmCommand = new RelayCommand(() => { if (CanConfirm) RequestClose?.Invoke(true); }); CancelCommand = new RelayCommand(() => RequestClose?.Invoke(false)); } } }