首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在WPF中,当选择一个TreeViewItem时,如何将焦点放在另一个控件上,同时仍然完成我的TreeViewItem选择?

在WPF中,当选择一个TreeViewItem时,如何将焦点放在另一个控件上,同时仍然完成我的TreeViewItem选择?
EN

Stack Overflow用户
提问于 2009-07-20 09:56:38
回答 2查看 1.9K关注 0票数 0

这听起来像是一个棘手的问题。让我解释一下..。

我有一台treeView。当单击/选择一个treeViewItem时,我希望将另一个TextBox作为焦点。

问题是,只要我添加代码来聚焦文本框,看起来TreeView就不再显示其选择的节点(即,treeItem根本没有被选择(或者至少看不到))。

这是我的事件处理代码...

代码语言:javascript
运行
复制
    private void trvTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {
        grpEditTreeItem.DataContext = (TreeItemDefinition)e.NewValue;


        txtToken.SelectAll();
        txtToken.Focus();
    }

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-20 10:01:53

区分选定的和聚焦的。任何时候都不能有一个以上的控件被聚焦。

你想要的是你的TreeView到,显示,当它失去焦点时,它是被选中的。

编辑:

但是我可以确认这个问题,将焦点设置到SelectedItemChanged()中的另一个控件将取消选择。

因此,您需要的是延迟Focus()调用的方法。粗略的(但不理想的)解决方案是将txtToken.Focus()放在trvTree_MouseUp()事件处理程序中。例如,当扩展Node时,这也会转移焦点。

因此,您可能必须使用从SelectedItemChanged()触发的一次性计时器。

票数 1
EN

Stack Overflow用户

发布于 2009-07-21 01:03:16

代码语言:javascript
运行
复制
this.Dispatcher.BeginInvoke((Action)delegate
{
    txtToken.SelectAll();
    txtToken.Focus();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1152686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档