在UserControl中设置文本框的焦点

本文关键字:焦点 置文本 UserControl | 更新日期: 2023-09-27 18:05:20

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

这个TextBox是用于搜索的,所以我试着把它设置在焦点上,当用户使Ctrl+F,这工作得很好,问题是,我不能使TextBox焦点,只是UserControl得到聚焦。

所以问题是:如何将UserControlFocus重定向到它里面的TextBox ?

I tried already:

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

和许多其他不同的组合,比如改变base的调用顺序,或者删除它……调用this.TextBox.Focus()设置一个StackOverFlow…验证this.TextBox.IsFocused是否不起作用,它总是false…所以…我怎样才能做到这一点?

在UserControl中设置文本框的焦点

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

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相互作用是相互干扰的。