我有一个标签控件和一些标签项。我正在成功收听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内容有关,但我不确定如何修复它。
答案 0 :(得分:10)
尝试将focus()调用放在dispatcher.BeginInvoke中。
Dispatcher.BeginInvoke(new Action(() => { txtsvc.Focus(); }));