我创建了一些文本框,我希望用户在其中输入十进制值。在我使用过的每个应用程序中,当我在文本框中输入内容并按 Enter 键时,该值将被接受并且文本框会失去焦点。我怎样才能在我的应用程序中做到这一点?
我知道通过关键事件应该相对容易做到这一点,但也许有一个命令或其他东西。
我搜索了 stackoverflow,但只发现了有关如何在按 Enter 后保持焦点的问题...
您还可以创建一个通用行为,可以轻松地将其应用于应用程序中的任何文本框。这是一个示例行为类:-
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命名空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)