Что лучший способ состоит в том, чтобы поймать клавишу Return в PasswordBox? (WPF/XAML)

constructor вызывается, когда Angular «создает / конструирует» компонент. Метод ngOnInit представляет собой ловушку, которая представляет часть инициализации жизненного цикла компонента. Хорошей практикой является использование его только для сервисного внедрения :

constructor(private 
    service1: Service1,
    service2: Service2
){};

Даже если это возможно, вам не следует выполнять какую-то «работу» внутри. Если вы хотите запустить какое-то действие, которое должно произойти при «инициализации» компонента, используйте ngOnInit:

ngOnInit(){
    service1.someWork();
};

Более того, действия, которые включают входные свойства , поступающие из родительского компонента , не может быть сделано в конструкторе. Они должны быть размещены в методе ngOnInit или другом крючке. То же самое относится к элементу, связанному с представлением (DOM), например, элементы viewchild :

@Input itemFromParent: string;
@ViewChild('childView') childView;

constructor(){
    console.log(itemFromParent); // KO
    // childView is undefined here
};

ngOnInit(){
    console.log(itemFromParent); // OK
    // childView is undefined here, you can manipulate here
};
20
задан Giffyguy 24 July 2009 в 19:15
поделиться

3 ответа

Есть еще более простой механизм активации кода кнопки. Класс WPF Button предоставляет свойство IsDefault. Если установлено значение true, если вы нажмете return, когда некоторые объекты в окне имеют фокус, код события нажатия кнопки будет запущен автоматически. Этот механизм работает как заклинание с паролем.

55
ответ дан 29 November 2019 в 22:54
поделиться

Вы можете обработать событие KeyDown в PasswordBox (и TextBox, если хотите), а затем использовать следующий обработчик событий -

private void OnKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key != Key.Return && e.Key != Key.Enter)
        return;
    e.Handled = true;
    HandleEnter();
}
4
ответ дан 29 November 2019 в 22:54
поделиться

Вы можете попробовать использовать RoutedCommand.

Вы можете установить его в свойстве Command кнопки.
Вы также можете добавить KeyGesture к InputBindings вашей формы входа, чтобы связать клавишу Enter для запуска вашей RoutedCommand.

Затем добавьте CommandBinding в CommandBindings вашей формы входа, чтобы привязать RoutedCommand к обработчикам Executed в вашем коде и выполнить или запустить ваш процесс проверки входа в систему.

1
ответ дан 29 November 2019 в 22:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: