Вместо прикрепления события PreviewKeyUp
с каждым TextBox
в моем приложении и проверки того, был ли нажатый ключ клавишей Enter, а затем выполните действие, я решил реализовать расширенную версию TextBox
, которая включает в себя DefaultAction событие, которое срабатывает при нажатии клавиши ввода в 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) и процедурного (С#)?