gpt4 book ai didi

WPF ItemsControl - 如何知道项目何时完成加载,以便我可以关注第一个?

转载 作者:行者123 更新时间:2023-12-04 14:36:12 25 4
gpt4 key购买 nike

我的 View 中有一个 ItemsControl,它绑定(bind)到 ViewModel 的 ObservableCollection。集合被填充,然后引发从 VM 到 View 的事件(想想搜索结果和 SearchFinished 事件)。

我想将键盘焦点移动到 ItemsControl 中的第一个项目,但是当我在处理 SearchFinished 时在 View 的代码隐藏中执行此操作时,项目尚未呈现(集合已填充,但 wpf 的呈现是异步的并且没有还没有发生),所以没有什么可关注的(Focus() 需要已经构建了项目的可视化树)。

我想做 (myItemsControl.ItemContainerGenerator.ContainerFromIndex(0) as UIElement).Focus();,但由于第 0 个项目尚未加载,ContainerFromIndex(0) 返回 null。

我尝试使用 Dispatcher.BeginInvoke... 以低优先级延迟它,但这取决于确切的时间并且通常不起作用。

如何等到 ItemsControl 中的第一个项目被加载?

最佳答案

您可以使用 ItemContainerGenerator.StatusChanged事件,然后检查它的Status属性(property)。如果 Status == GeneratorStatus.ContainersGenerated ,那么你就可以安全地拿到第一个容器了。

关于WPF ItemsControl - 如何知道项目何时完成加载,以便我可以关注第一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2492214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com