| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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;
- TogglePasswordVisibilityButton.Content = "\ue7b3";
- TogglePasswordVisibilityButton.ToolTip = "隐藏密码";
- PasswordTextBox.Focus();
- PasswordTextBox.CaretIndex = PasswordTextBox.Text.Length;
- return;
- }
- PasswordBox.Password = PasswordTextBox.Text;
- PasswordBox.Visibility = Visibility.Visible;
- PasswordTextBox.Visibility = Visibility.Collapsed;
- TogglePasswordVisibilityButton.Content = "\uED1A";
- 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();
- }
- }
|