添加项目文件。
This commit is contained in:
70
OrpaonEMS.App/PasswordBoxHelper.cs
Normal file
70
OrpaonEMS.App/PasswordBoxHelper.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
using MaterialDesignThemes.Wpf;
|
||||
using OrpaonEMS.App;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static OrpaonEMS.App.CANDrive.CAN;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media.Media3D;
|
||||
using System.Windows;
|
||||
|
||||
namespace OrpaonEMS.App
|
||||
{
|
||||
public static class PasswordBoxHelper
|
||||
{
|
||||
public static readonly DependencyProperty BoundPasswordProperty =
|
||||
DependencyProperty.RegisterAttached("BoundPassword",
|
||||
typeof(string), typeof(PasswordBoxHelper),
|
||||
new PropertyMetadata(string.Empty, OnBoundPasswordChanged));
|
||||
|
||||
public static string GetBoundPassword(DependencyObject d)
|
||||
{
|
||||
return (string)d.GetValue(BoundPasswordProperty);
|
||||
}
|
||||
|
||||
public static void SetBoundPassword(DependencyObject d, string value)
|
||||
{
|
||||
d.SetValue(BoundPasswordProperty, value);
|
||||
}
|
||||
|
||||
private static void OnBoundPasswordChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (d is PasswordBox passwordBox)
|
||||
{
|
||||
passwordBox.PasswordChanged -= PasswordBox_PasswordChanged;
|
||||
if (!GetUpdatingPassword(passwordBox))
|
||||
{
|
||||
passwordBox.Password = (string)e.NewValue;
|
||||
}
|
||||
passwordBox.PasswordChanged += PasswordBox_PasswordChanged;
|
||||
}
|
||||
}
|
||||
|
||||
private static readonly DependencyProperty UpdatingPasswordProperty =
|
||||
DependencyProperty.RegisterAttached("UpdatingPassword", typeof(bool), typeof(PasswordBoxHelper), new PropertyMetadata(false));
|
||||
|
||||
private static bool GetUpdatingPassword(DependencyObject d)
|
||||
{
|
||||
return (bool)d.GetValue(UpdatingPasswordProperty);
|
||||
}
|
||||
|
||||
private static void SetUpdatingPassword(DependencyObject d, bool value)
|
||||
{
|
||||
d.SetValue(UpdatingPasswordProperty, value);
|
||||
}
|
||||
|
||||
private static void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is PasswordBox passwordBox)
|
||||
{
|
||||
SetUpdatingPassword(passwordBox, true);
|
||||
SetBoundPassword(passwordBox, passwordBox.Password);
|
||||
SetUpdatingPassword(passwordBox, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user