Tom*_*fka 6 wpf focus itemscontrol loaded
我的View中有一个ItemsControl,它绑定到ViewModel的ObservableCollection.该集合已被填充,之后将引发从VM到视图的事件(想想搜索结果和SearchFinished事件).
我想将键盘焦点移动到ItemsControl中的第一个项目,但是当我在处理SearchFinished时在View的代码隐藏中执行它时,项目尚未呈现(集合已经填充,但是wpf的呈现是异步的并且没有'发生了),所以没有什么可以聚焦(Focus()需要已经构建了项目的可视树).
我想(myItemsControl.ItemContainerGenerator.ContainerFromIndex(0)作为UIElement).Focus();,但是由于第0项尚未加载,ContainerFromIndex(0)返回null.
我尝试用Dispatcher.BeginInvoke延迟它...优先级低,但这取决于确切的时间,通常不起作用.
我怎么能等到ItemsControl中的第一项加载?
您可以使用该ItemContainerGenerator.StatusChanged事件,然后检查其Status属性.如果Status == GeneratorStatus.ContainersGenerated,那么你可以安全地获得第一个容器.
| 归档时间: |
|
| 查看次数: |
3180 次 |
| 最近记录: |