Пример #1
0
        /// <summary>Приватное свойство для получения объекта-слушателя.</summary>
        private static ListenerTextPasswordBox GetListenerText(PasswordBox passwordBox)
        {
            ListenerTextPasswordBox listener = (ListenerTextPasswordBox)passwordBox.GetValue(ListenerTextPropertyKey.DependencyProperty);

            // Если элемент не задан, то его создание и сохранение.
            if (listener == null)
            {
                passwordBox.SetValue(ListenerTextPropertyKey, listener = new ListenerTextPasswordBox(passwordBox));
            }

            return(listener);
        }
Пример #2
0
        /// <summary>Обработчик изменения значения свойства.</summary>
        /// <param name="d">Объект - владелец свойства. Исключение - если не PasswordBox.</param>
        /// <param name="e">Аргументы изменения.</param>
        private static void ChangeText(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            // Если старое и новое значения равны, то выход из метода.
            if (
                (e.OldValue == null && e.NewValue == null) ||
                (e.OldValue != null && e.OldValue.Equals(e.NewValue))
                )
            {
                return;
            }


            // Приведение к PasswordBox.
            if (!(d is PasswordBox passwordBox))
            {
                throw new ArgumentException("Должен быть PasswordBox", nameof(d));
            }

            // Получение объекта-слушателя события PasswordChanged.
            ListenerTextPasswordBox listener = GetListenerText(passwordBox);

            // Передача нового значения пароля.
            listener.ChangePassword((string)e.NewValue);
        }