using System.ComponentModel; using System.Windows; using System.Windows.Controls; using LocalizationTool.Services; using LocalizationTool.ViewModels; namespace LocalizationTool.Views { /// 翻译设置窗口:绑定 TranslationSettingsViewModel,PasswordBox 的密文输入在此转发。 public partial class TranslationSettingsWindow : Window { public TranslationSettingsViewModel ViewModel { get; } public TranslationSettingsWindow(Config.ConfigRoot config) { InitializeComponent(); Icon = App.AppIcon; ViewModel = new TranslationSettingsViewModel(config); DataContext = ViewModel; // VM 恢复默认/初始化时刷新 PasswordBox 显示(PasswordBox 无法绑定) ViewModel.PropertyChanged += OnViewModelPropertyChanged; // 初始掩码回显(构造期间的 PropertyChanged 已错过) TxtOpenAIKey.Password = ViewModel.OpenAiKeyInput; TxtBaiduSecret.Password = ViewModel.BaiduSecretInput; ViewModel.Initialize(LanguageCatalog.Find("en-US") ?? LanguageCatalog.All[0]); ViewModel.RequestClose += ok => { DialogResult = ok; Close(); }; } private void OnViewModelPropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(ViewModel.OpenAiKeyInput)) TxtOpenAIKey.Password = ViewModel.OpenAiKeyInput ?? ""; else if (e.PropertyName == nameof(ViewModel.BaiduSecretInput)) TxtBaiduSecret.Password = ViewModel.BaiduSecretInput ?? ""; } /// PasswordBox 不能直接绑定,把输入值转发给 VM(掩码/空 = 未修改)。 private void OpenAiKey_PasswordChanged(object sender, RoutedEventArgs e) { ViewModel.OpenAiKeyInput = ((PasswordBox)sender).Password ?? ""; } private void BaiduSecret_PasswordChanged(object sender, RoutedEventArgs e) { ViewModel.BaiduSecretInput = ((PasswordBox)sender).Password ?? ""; } } }