WPF как сделать так, чтобы текстовое поле теряло фокус после нажатия Enter

Я создал несколько текстовых полей и хочу, чтобы пользователь вводил в них десятичные значения. В каждом приложении, которое я когда-либо использовал, когда я набираю что-то в текстовое поле и нажимаю клавишу ввода, значение принимается, и текстовое поле теряет фокус. Как я могу сделать это в моем приложении? Я знаю, что это должно быть относительно легко сделать с ключевым событием, но, возможно, есть команда или что-то еще. Я искал stackru, но я только нашел вопросы о том, как сохранить фокус после нажатия Enter...

1 ответ

Решение

Вы также можете создать общее поведение, которое можно легко применить к любому текстовому полю в вашем приложении. Вот пример класса поведения:-

public class TextBoxEnterKeyUpdateBehavior : Behavior<TextBox>
{        
    protected override void OnAttached()
    {
        if (this.AssociatedObject != null)
        {
            base.OnAttached();
            this.AssociatedObject.KeyDown += AssociatedObject_KeyDown;
        }
    }

    protected override void OnDetaching()
    {
        if (this.AssociatedObject != null)
        {
            this.AssociatedObject.KeyDown -= AssociatedObject_KeyDown;
            base.OnDetaching();
        }
    }

    private void AssociatedObject_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
    {
        TextBox textBox = sender as TextBox;
        if (textBox != null)
        {
            if (e.Key == Key.Return)
            {
                if (e.Key == Key.Enter)
                {
                    textBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
                }
            }
        }
    }
}

Чтобы использовать этот класс в вашем xaml, просто включите его в коллекцию поведения текстового поля следующим образом:-

<TextBox>
    <i:Interaction.Behaviors>
           <TextBoxEnterKeyUpdateBehavior />
    </i:Interaction.Behaviors>
</TextBox>

Здесь "i" относится к пространству имен System.Windows.Interactivity.

Другие вопросы по тегам