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 ?? "";
}
}
}