这听起来像是一个棘手的问题......让我精心准备......
我有一个treeView。当单击/选择treeViewItem时,我希望另一个TextBox被聚焦。
问题在于,只要我将代码添加到Focus the Textbox,就会看起来TreeView不再显示其选定的节点(即treeItem根本没有被选中(或者至少没有被选中))。
这是我的事件处理代码......
private void trvTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
grpEditTreeItem.DataContext = (TreeItemDefinition)e.NewValue;
txtToken.SelectAll();
txtToken.Focus();
}
有什么想法吗?
答案 0 :(得分:1)
区分选定和聚焦。任何时候都不能有超过1个控制。
你想要的是TreeView在失去焦点时显示它的selectednode。
编辑:
但我可以确认问题,将Focus设置为SelectedItemChanged()内的另一个控件将取消选择。
所以你需要的是推迟Focus()调用。粗略(但不理想)的解决方案是将txtToken.Focus()放在trvTree_MouseUp()事件处理程序中。但是,例如,当扩展节点时,这也会使焦点消失。
所以你可能不得不使用从SelectedItemChanged()触发的一次性计时器。
答案 1 :(得分:0)
this.Dispatcher.BeginInvoke((Action)delegate
{
txtToken.SelectAll();
txtToken.Focus();
});