WPF TabControl在SelectionChanged上,将焦点设置为文本字段

我有一个标签控件和一些标签项。 我正在成功收听SelectionChanged事件,并检查我感兴趣的选项卡是否是当前选中的选项卡。

我正在使用这个代码(下面),并通过调试器,我可以看到我的分支逻辑按设计工作; 但是,我遇到的问题是有些东西覆盖了对txt.Focus()调用,因为在显示正确的选项卡项后,焦点不在文本框上。

 private void tabMain_SelectionChanged(object sender, SelectionChangedEventArgs e) { // exact same behavior with and without this line e.Handled = true; if (e.AddedItems.Contains(usrTab)) { txtusr.Focus(); } else if (e.AddedItems.Contains(svcTab)) { txtsvc.Focus(); } } 

如果我只是将txtusr.Focus()放在按钮事件处理程序中,它就会完全按照我的预期进行聚焦。

我怀疑这与调用.Focus()方法时没有加载的tabitem内容有关,但我不确定如何修复它。

尝试将focus()调用放在dispatcher.BeginInvoke中。

 Dispatcher.BeginInvoke(new Action(() => { txtsvc.Focus(); }));