/// <summary>Приватное свойство возвращающее объект с методами шифрования.</summary> /// <param name="passwordBox">PasswordBox с котрым работаю методы.</param> /// <returns>Объект с методами шифрвания.</returns> private static ListenerSecurityPasswordBox GetListenerSecurity(PasswordBox passwordBox) { ListenerSecurityPasswordBox listener = (ListenerSecurityPasswordBox)passwordBox.GetValue(ListenerSecurityPropertyKey.DependencyProperty); // Если элемент не задан, то его создание и сохранение. if (listener == null) { passwordBox.SetValue(ListenerSecurityPropertyKey, listener = new ListenerSecurityPasswordBox(passwordBox)); } return(listener); }
/// <summary>Метод обратного вызова при изменении значения свойства. /// Метод всегда возвращает значение к делегату метода GetRSA.</summary> private static void ChangeRSA(DependencyObject d, DependencyPropertyChangedEventArgs e) { // Приведение к PasswordBox. if (!(d is PasswordBox passwordBox)) { throw new ArgumentException("Должен быть PasswordBox", nameof(d)); } // Получение объекта слушателя. ListenerSecurityPasswordBox listener = GetListenerSecurity(passwordBox); // Передача ссылки на метод для привязки обратного вызова. if (e.NewValue == null || !e.NewValue.Equals((Func <string, byte[]>)listener.GetRSA)) { SetGetRSA(passwordBox, listener.GetRSA); } }
/// <summary>Метод обратного вызова при изменении значения свойства. /// Метод всегда возвращает значение к делегату метода GetHashCode256.</summary> private static void ChangeHash(DependencyObject d, DependencyPropertyChangedEventArgs e) { // Приведение к PasswordBox. if (!(d is PasswordBox passwordBox)) { throw new ArgumentException("Должен быть PasswordBox", nameof(d)); } // Получение объекта слушателя. ListenerSecurityPasswordBox listener = GetListenerSecurity(passwordBox); // Передача ссылки на метод для привязки обратного вызова, если новое значение иное. if (e.NewValue == null || !e.NewValue.Equals((Func <IEnumerable <char>, byte[]>)listener.GetHashCode256)) { SetGetHashCode256(passwordBox, listener.GetHashCode256); } }