WPF:将焦点设置到 ItemControl 内的控件
我有一个 ItemsControl
,它绑定到数据源并生成多个容器。我正在使用代码来确保在任何给定时间只有一个容器可见。容器使用 TemplateSelector
,因此每个容器的内容都不同(这排除了通过名称查找控件的可能性)。
我想将键盘焦点设置为当前可见容器中的第一个控件。我已为每个容器的 IsVisibleChanged
事件添加了一个事件处理程序,但是当我访问 VisualTree
时,没有子容器。
有什么想法吗?
I have an ItemsControl
that is bound to a datasource and generates several containers. I am using code to ensure that only one of the containers is visible at any given time. The containers use a TemplateSelector
so the content of each container is different (which rules out finding the control by name).
I would like to set the keyboard focus to the first control in the currently visible container. I have added an event handler to the IsVisibleChanged
event for each container but when I access the VisualTree
there are no children.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您只能在子元素本身变得可见后才能将焦点设置在子元素上。一种选择是找到您想要聚焦的子元素,然后向其
IsVisibleChanged
添加处理程序。在处理程序中,聚焦对象,然后删除处理程序。编辑:
您应该能够在 IsVisibleChanged 事件处理程序中访问 Items 集合。
有了这个代码:
You can only set focus on the child element after the child element itself has become visible. One option is to find the child element you want to focus, then add a handler to its
IsVisibleChanged
. In the handler, Focus the object and then remove the handler.Edit:
You should be able to access the Items collection in the IsVisibleChanged event handler.
With this code: