C# 在UserControl内设置文本框的焦点

C# 在UserControl内设置文本框的焦点,c#,wpf,textbox,user-controls,mahapps.metro,C#,Wpf,Textbox,User Controls,Mahapps.metro,我有一个UserControl,里面只有一个TextBox,这个TextBox有一些附加属性和一些代码,因为我要在多个视图中使用它,我用它创建了一个UserControl,以提高可重用性和维护性 这个TextBox用于搜索,所以当用户执行Ctrl+F时,我尝试将其设置为焦点,这很好,问题是,我无法使TextBox聚焦,只有UserControl聚焦 所以问题是:如何将用户控件的焦点重定向到其内部的文本框 我已经试过了: protected override void OnPreviewGotKe

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

这个
TextBox
用于搜索,所以当用户执行
Ctrl+F
时,我尝试将其设置为焦点,这很好,问题是,我无法使
TextBox
聚焦,只有
UserControl
聚焦

所以问题是:如何将
用户控件的
焦点
重定向到其内部的
文本框

我已经试过了:

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

还有许多其他不同的组合,比如更改调用
基的顺序,或者删除它…调用
this.TextBox.Focus()
设置堆栈溢出…验证
this.TextBox.IsFocused
是否起作用,它总是
false
…所以。。。我怎样才能做到这一点?

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

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


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

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

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

我猜整个
RoutedEvents
冒泡和隧道的交互作用是干扰