这听起来像是一个棘手的问题。让我解释一下..。
我有一台treeView。当单击/选择一个treeViewItem时,我希望将另一个TextBox作为焦点。
问题是,只要我添加代码来聚焦文本框,看起来TreeView就不再显示其选择的节点(即,treeItem根本没有被选择(或者至少看不到))。
这是我的事件处理代码...
private void trvTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
grpEditTreeItem.DataContext = (TreeItemDefinition)e.NewValue;
txtToken.SelectAll();
txtToken.Focus();
}
有什么想法吗?
发布于 2009-07-20 10:01:53
区分选定的和聚焦的。任何时候都不能有一个以上的控件被聚焦。
你想要的是你的TreeView到,显示,当它失去焦点时,它是被选中的。
编辑:
但是我可以确认这个问题,将焦点设置到SelectedItemChanged()中的另一个控件将取消选择。
因此,您需要的是延迟Focus()调用的方法。粗略的(但不理想的)解决方案是将txtToken.Focus()放在trvTree_MouseUp()事件处理程序中。例如,当扩展Node时,这也会转移焦点。
因此,您可能必须使用从SelectedItemChanged()触发的一次性计时器。
发布于 2009-07-21 01:03:16
this.Dispatcher.BeginInvoke((Action)delegate
{
txtToken.SelectAll();
txtToken.Focus();
});
https://stackoverflow.com/questions/1152686
复制相似问题