81 lines
2.3 KiB
C#
81 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Shapes;
|
|
|
|
namespace Log_In
|
|
{
|
|
public partial class Window1 : Window
|
|
{
|
|
public Window1()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
}
|
|
|
|
public class PasswordBoxMonitor : DependencyObject
|
|
{
|
|
public static bool GetIsMonitoring(DependencyObject obj)
|
|
{
|
|
return (bool)obj.GetValue(IsMonitoringProperty);
|
|
}
|
|
|
|
public static void SetIsMonitoring(DependencyObject obj, bool value)
|
|
{
|
|
obj.SetValue(IsMonitoringProperty, value);
|
|
}
|
|
|
|
public static readonly DependencyProperty IsMonitoringProperty =
|
|
DependencyProperty.RegisterAttached("IsMonitoring", typeof(bool), typeof(PasswordBoxMonitor), new UIPropertyMetadata(false, OnIsMonitoringChanged));
|
|
|
|
public static int GetPasswordLength(DependencyObject obj)
|
|
{
|
|
return (int)obj.GetValue(PasswordLengthProperty);
|
|
}
|
|
|
|
public static void SetPasswordLength(DependencyObject obj, int value)
|
|
{
|
|
obj.SetValue(PasswordLengthProperty, value);
|
|
}
|
|
|
|
public static readonly DependencyProperty PasswordLengthProperty =
|
|
DependencyProperty.RegisterAttached("PasswordLength", typeof(int), typeof(PasswordBoxMonitor), new UIPropertyMetadata(0));
|
|
|
|
private static void OnIsMonitoringChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
var pb = d as PasswordBox;
|
|
if (pb == null)
|
|
{
|
|
return;
|
|
}
|
|
if ((bool)e.NewValue)
|
|
{
|
|
pb.PasswordChanged += PasswordChanged;
|
|
}
|
|
else
|
|
{
|
|
pb.PasswordChanged -= PasswordChanged;
|
|
}
|
|
}
|
|
|
|
private static void PasswordChanged(object sender, RoutedEventArgs e)
|
|
{
|
|
var pb = sender as PasswordBox;
|
|
if (pb == null)
|
|
{
|
|
return;
|
|
}
|
|
SetPasswordLength(pb, pb.Password.Length);
|
|
}
|
|
}
|
|
}
|