WPF如何使文本框在输入后失去焦点

本文关键字:输入 失去 焦点 何使 文本 WPF | 更新日期: 2023-09-27 18:03:01

我创建了一些文本框,我希望用户在其中输入十进制值。在我使用过的每个应用程序中,当我在文本框中输入一些东西并按回车键时,值被接受,文本框失去焦点。我怎么在我的应用中做到呢?我知道使用一个键事件应该是相对容易的,但也许有一个命令或其他东西。我搜索了stackoverflow,但我只发现了关于如何在点击回车后保持焦点的问题…

WPF如何使文本框在输入后失去焦点

您还可以创建一个通用行为,它可以很容易地应用于应用程序中的任何文本框。下面是一个示例行为类:-

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命名空间