| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using LocalizationTool.Services;
- namespace LocalizationTool.ViewModels
- {
- /// <summary>新增语言窗口:从语言目录选择,排除已存在的语言。</summary>
- public class AddLanguageViewModel : ViewModelBase
- {
- private LanguageEntry _selected;
- public List<LanguageEntry> Languages { get; }
- public LanguageEntry Selected
- {
- get => _selected;
- set => Set(ref _selected, value);
- }
- public bool CanConfirm => Selected != null;
- /// <summary>请求关闭窗口(true = 确认)。</summary>
- public event Action<bool> RequestClose;
- public RelayCommand ConfirmCommand { get; }
- public RelayCommand CancelCommand { get; }
- public AddLanguageViewModel(IEnumerable<string> existingCodes)
- {
- var existing = new HashSet<string>(
- (existingCodes ?? Enumerable.Empty<string>()).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));
- }
- }
- }
|