Utopia-Canteen-System/Views/AdminSettingsAuthView.xaml.cs

66 lines
1.9 KiB
C#

using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
using UtopiaCanteenSystem.ViewModels;
namespace UtopiaCanteenSystem.Views;
/// <summary>
/// Minimal code-behind for PasswordBox + initial focus.
/// </summary>
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;
}
}