/// <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); }