using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Threading; using UtopiaCanteenSystem.ViewModels; namespace UtopiaCanteenSystem.Views; /// /// Minimal code-behind for PasswordBox + initial focus. /// public partial class AdminSettingsAuthView : UserControl { private AdminSettingsAuthViewModel? _vm; public AdminSettingsAuthView() { InitializeComponent(); Loaded += OnLoaded; DataContextChanged += OnDataContextChanged; } private void OnLoaded(object sender, RoutedEventArgs e) { Dispatcher.BeginInvoke(() => { PasswordBox.Password = string.Empty; if (DataContext is AdminSettingsAuthViewModel vm) vm.Password = string.Empty; UsernameTextBox.Focus(); UsernameTextBox.SelectAll(); }, DispatcherPriority.Input); } private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { if (_vm != null) _vm.PropertyChanged -= VmOnPropertyChanged; _vm = DataContext as AdminSettingsAuthViewModel; if (_vm != null) _vm.PropertyChanged += VmOnPropertyChanged; PasswordBox.Password = string.Empty; if (DataContext is AdminSettingsAuthViewModel vm) vm.Password = string.Empty; } private void VmOnPropertyChanged(object? sender, PropertyChangedEventArgs e) { if (!string.Equals(e.PropertyName, nameof(AdminSettingsAuthViewModel.Password), StringComparison.Ordinal)) return; if (_vm != null && string.IsNullOrEmpty(_vm.Password) && !string.IsNullOrEmpty(PasswordBox.Password)) PasswordBox.Password = string.Empty; } private void PasswordBox_OnPasswordChanged(object sender, RoutedEventArgs e) { if (DataContext is AdminSettingsAuthViewModel vm) vm.Password = PasswordBox.Password; } }