在UserControl中设置TextBox的焦点

时间:2015-07-29 18:45:07

标签: c# wpf textbox user-controls mahapps.metro

我的UserControl里面只有一个TextBox,这个TextBox有一些附加属性和一些代码,因为我将在多个视图中使用它,我创建了用UserControl来改善可重用性和维护。

TextBox用于搜索,因此我尝试在用户创建Ctrl+F时将其设置为焦点,这样可以正常运行,问题是,我无法生成{ {1}}焦点,只有TextBox得到关注。

所以问题是:如何将UserControl的{​​{1}}重定向到其中的Focus

我已经尝试过了:

UserControl

以及许多其他不同的组合,例如更改调用TextBox的顺序,或删除它...调用protected override void OnPreviewGotKeyboardFocus(KeyboardFocusChangedEventArgs e) { this.TextBox.SelectAll(); base.OnPreviewGotKeyboardFocus(e); } 设置StackOverFlow ...验证base是否&# 39;工作,总是this.TextBox.Focus() ......所以......我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:0)

好的,明白了,我改变了:

protected override void OnPreviewGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
{
    this.TextBox.SelectAll();        
    base.OnPreviewGotKeyboardFocus(e);
}

为:

protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
{
    this.TextBox.SelectAll();        
    base.OnGotKeyboardFocus(e);
}

我猜冒泡和隧道的整个RoutedEvents相互作用都在干扰。