예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
            }
        }
예제 #3
0
        /// <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);
            }
        }