Вместо того, чтобы прикреплять событие PreviewKeyUp
с каждым TextBox
в моем приложении и проверять, была ли нажатая клавиша клавишей Enter, а затем выполнить действие, я решил реализовать расширенную версию TextBox
, которая включает действие по умолчанию событие, которое срабатывает при нажатии клавиши Enter в TextBox
.
В основном я создал новый класс, который расширяется от TextBox
с публичным событием DefaultAction
, например:
public class DefaultTextBoxControl:TextBox
{
public event EventHandler<EventArgs> DefaultAction = delegate { };
public DefaultTextBoxControl()
{
PreviewKeyUp += DefaultTextBoxControl_PreviewKeyUp;
}
void DefaultTextBoxControl_PreviewKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key != Key.Enter)
{
return;
}
DefaultAction(this, EventArgs.Empty);
}
}
Затем я использую это собственное текстовое поле из моего приложения, например (xaml):
<Controls:DefaultTextBoxControl DefaultAction="DefaultTextBoxControl_DefaultAction">
</Controls:DefaultTextBoxControl>
Теперь, имея небольшой опыт в изучении WPF, я понял, что почти все время существует «более крутой» (и, надеюсь, более простой) способ реализации вещей
... поэтому мой вопрос, Как я могу улучшить вышеуказанный элемент управления? Или, может быть, есть другой способ, которым я могу выполнить вышеуказанный элемент управления? ... может быть, использовать только декларативный код вместо декларативного (xaml) и процедурного (C #)?