WPF / C中的文本框上的光标聚焦#

我目前正在创建一个屏幕键盘。 我正在使用routedcommands处理按钮单击。 问题是,当我点击键盘面板上的按钮时,焦点会转移到按钮而不是文本框。 该要求规定光标应始终显示在文本框中,以指示将插入下一个字符的位置。 是否有一种方法可以在单击按钮时将焦点保持在文本框上。

将逻辑焦点设置为输入控件

FocusManager.SetFocusedElement(this, textboxJack); // set logical focus 

将键盘焦点设置为输入控件

 Keyboard.Focus(textboxJill); // set keyboard focus 

要知道逻辑和键盘焦点之间的区别

输入概述 – 专注于MSDN

获取特定控件的参考(在这种情况下为TextBox)。 单击后,在Button_Click方法中粘贴此:

 Dispatcher.BeginInvoke((ThreadStart)delegate { control.Focus(); }); 

我喜欢这些做我的作业问题; “要求说明”……无价之宝。 对于那些通过Google找到这个的人来说,在WPF TextBox中逐步移动光标的技巧是使用SelectioNStart属性。

 private void Button_Click(object sender, RoutedEventArgs e) { textBox.Focus(); textBox.SelectionStart = textName.Text.Length; } 
 Textbox.Focus(); 

这将集中在文本框上

我解决这个问题的方法是将focusable=false设置为键盘上的所有按钮/控件。 这样你就不会失去当前控制的焦点。

您的问题可以通过为“键盘”使用单独的焦点范围来解决。 只需将以下属性应用于包含所有按钮的控件,然后它们将位于单独的焦点范围内,并且在单击时不会将焦点设置为它们

 FocusManager.IsFocusScope="True" 

我不得不用它来得到我想要的结果

 FocusManager.SetFocusedElement(this, UserNameautoCompleteBox); Key key = Key.Enter; // Key to send var target = Keyboard.FocusedElement; // Target element RoutedEvent routedEvent = Keyboard.KeyDownEvent; // Event to send target.RaiseEvent( new KeyEventArgs( Keyboard.PrimaryDevice, PresentationSource.FromVisual(UserNameautoCompleteBox), 0, key) { RoutedEvent = routedEvent } ); 

我想做同样的事情,但似乎没有什么对我有用。 当我正在使用MVVM时,我真的需要一个纯粹在XAML中工作的答案。

我终于找到了这个例子: http : //spin.atomicobject.com/2013/03/06/xaml-wpf-textbox-focus/

并将其修改为:

在“资源”部分:

   

在我的网格定义中: