如何将焦点设置为选项卡视图选择的视图(用户控件)中的文本框

时间:2017-01-31 21:23:54

标签: c# wpf xaml mvvm

这是一个MVVM WPF问题。,c#。 在一个窗口中,我有一个看起来像这样的Tab控件

    <TabControl TabStripPlacement="Top" >
    <TabItem Style="{StaticResource Tabitemstyle}">
    <TabItem.Header>
    <Label Content="Home" Style="{StaticResource Tablablestyle}"/>
    </TabItem.Header>
    <v:HomePageView/>
    </TabItem>
    <TabItem ....
    <v:OtherPageView/>

诀窍是第二个标签项中存在一个文本框,当用户选择第二个标签时,我希望它具有输入焦点。

我尝试了一些解决方案,但到目前为止最接近的解决方案(使用数据触发器样式或聚焦元素)几乎可以使用:

我可以看到光标是在文本框内,但它不会闪烁。似乎焦点仍然在外部窗口中的选项卡控件上,而不是由OtherPageView.xaml定义的视图中的文本框元素。当我点击一次tab时,一切正常,但这就是我试图减轻用户不得不做的事情。

1 个答案:

答案 0 :(得分:1)

我会使用背后的代码:

  • 收听TabItem内容上的可见性更改事件(即v:HomePageView)

  • 找到文本框UI元素(您可以简单地为文本框命名 在xaml中并从后面的代码中引用它

  • 接下来,使用UIElement.Focus()方法将焦点设置在文本框上

  • 最后如果键盘没有对焦,那么使用 Keyboard.Focus(...)方法将键盘聚焦在文本框上。