| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- using System.Windows;
- namespace NetTool.Client;
- public partial class PasswordPromptWindow : Window
- {
- private bool _isPasswordVisible;
- private bool _isSyncingPasswordText;
- public PasswordPromptWindow(string deviceLabel, string savedPassword)
- {
- InitializeComponent();
- PromptTextBlock.Text = $"请输入设备 {deviceLabel} 的管理密码。";
- PasswordBox.Password = savedPassword;
- PasswordTextBox.Text = savedPassword;
- ClearPasswordButton.Visibility = string.IsNullOrWhiteSpace(savedPassword) ? Visibility.Collapsed : Visibility.Visible;
- Loaded += (_, _) => PasswordBox.Focus();
- }
- public string Password => PasswordBox.Password;
- public bool ClearSavedPasswordRequested { get; private set; }
- private void OkButton_OnClick(object sender, RoutedEventArgs e)
- {
- if (string.IsNullOrWhiteSpace(PasswordBox.Password))
- {
- MessageBox.Show(this, "请输入管理密码。", "缺少管理密码", MessageBoxButton.OK, MessageBoxImage.Information);
- PasswordBox.Focus();
- return;
- }
- DialogResult = true;
- }
- private void CancelButton_OnClick(object sender, RoutedEventArgs e)
- {
- DialogResult = false;
- }
- private void ClearPasswordButton_OnClick(object sender, RoutedEventArgs e)
- {
- ClearSavedPasswordRequested = true;
- PasswordBox.Clear();
- PasswordTextBox.Clear();
- ClearPasswordButton.Visibility = Visibility.Collapsed;
- FocusPasswordInput();
- }
- private void TogglePasswordVisibilityButton_OnClick(object sender, RoutedEventArgs e)
- {
- _isPasswordVisible = !_isPasswordVisible;
- if (_isPasswordVisible)
- {
- PasswordTextBox.Text = PasswordBox.Password;
- PasswordTextBox.Visibility = Visibility.Visible;
- PasswordBox.Visibility = Visibility.Collapsed;
- ShowPasswordIcon.Visibility = Visibility.Collapsed;
- HidePasswordIcon.Visibility = Visibility.Visible;
- TogglePasswordVisibilityButton.ToolTip = "隐藏密码";
- PasswordTextBox.Focus();
- PasswordTextBox.CaretIndex = PasswordTextBox.Text.Length;
- return;
- }
- PasswordBox.Password = PasswordTextBox.Text;
- PasswordBox.Visibility = Visibility.Visible;
- PasswordTextBox.Visibility = Visibility.Collapsed;
- ShowPasswordIcon.Visibility = Visibility.Visible;
- HidePasswordIcon.Visibility = Visibility.Collapsed;
- TogglePasswordVisibilityButton.ToolTip = "查看密码";
- PasswordBox.Focus();
- }
- private void PasswordTextBox_OnTextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
- {
- if (_isSyncingPasswordText)
- {
- return;
- }
- _isSyncingPasswordText = true;
- PasswordBox.Password = PasswordTextBox.Text;
- _isSyncingPasswordText = false;
- }
- private void FocusPasswordInput()
- {
- if (_isPasswordVisible)
- {
- PasswordTextBox.Focus();
- return;
- }
- PasswordBox.Focus();
- }
- }
|