TranslationSettingsWindow.xaml.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System.ComponentModel;
  2. using System.Windows;
  3. using System.Windows.Controls;
  4. using LocalizationTool.Services;
  5. using LocalizationTool.ViewModels;
  6. namespace LocalizationTool.Views
  7. {
  8. /// <summary>翻译设置窗口:绑定 TranslationSettingsViewModel,PasswordBox 的密文输入在此转发。</summary>
  9. public partial class TranslationSettingsWindow : Window
  10. {
  11. public TranslationSettingsViewModel ViewModel { get; }
  12. public TranslationSettingsWindow(Config.ConfigRoot config)
  13. {
  14. InitializeComponent();
  15. Icon = App.AppIcon;
  16. ViewModel = new TranslationSettingsViewModel(config);
  17. DataContext = ViewModel;
  18. // VM 恢复默认/初始化时刷新 PasswordBox 显示(PasswordBox 无法绑定)
  19. ViewModel.PropertyChanged += OnViewModelPropertyChanged;
  20. // 初始掩码回显(构造期间的 PropertyChanged 已错过)
  21. TxtOpenAIKey.Password = ViewModel.OpenAiKeyInput;
  22. TxtBaiduSecret.Password = ViewModel.BaiduSecretInput;
  23. ViewModel.Initialize(LanguageCatalog.Find("en-US") ?? LanguageCatalog.All[0]);
  24. ViewModel.RequestClose += ok =>
  25. {
  26. DialogResult = ok;
  27. Close();
  28. };
  29. }
  30. private void OnViewModelPropertyChanged(object sender, PropertyChangedEventArgs e)
  31. {
  32. if (e.PropertyName == nameof(ViewModel.OpenAiKeyInput))
  33. TxtOpenAIKey.Password = ViewModel.OpenAiKeyInput ?? "";
  34. else if (e.PropertyName == nameof(ViewModel.BaiduSecretInput))
  35. TxtBaiduSecret.Password = ViewModel.BaiduSecretInput ?? "";
  36. }
  37. /// <summary>PasswordBox 不能直接绑定,把输入值转发给 VM(掩码/空 = 未修改)。</summary>
  38. private void OpenAiKey_PasswordChanged(object sender, RoutedEventArgs e)
  39. {
  40. ViewModel.OpenAiKeyInput = ((PasswordBox)sender).Password ?? "";
  41. }
  42. private void BaiduSecret_PasswordChanged(object sender, RoutedEventArgs e)
  43. {
  44. ViewModel.BaiduSecretInput = ((PasswordBox)sender).Password ?? "";
  45. }
  46. }
  47. }