我在视图中有一个ItemsControl,它绑定到ViewModel中的ObservableCollection。集合已填充,并且随后从VM到View引发事件(考虑搜索结果和SearchFinished事件)。
我想将键盘焦点移动到ItemsControl中的第一项,但当我在View的代码后台处理SearchFinished时执行此操作时,尚未呈现项(集合已经填充,但wpf的呈现是异步的,尚未发生),因此没有什么可聚焦(Focus()需要已构建项的可视树)。
我想做(myItemsControl.ItemContainerGenerator.ContainerFromIndex(0) as UIElement).Focus();,但由于第0项尚未加载,ContainerFromIndex(0)返回null。
我尝试使用Dispatcher.BeginInvoke延迟执行...具有低优先级,但这取决于确切的时间,通常不起作用。
如何等待ItemsControl中的第一项加载完成?