У меня есть ItemsControl в моем представлении, который привязан к ObservableCollection из ViewModel. Коллекция заполняется, а затем возникает событие от виртуальной машины для просмотра (подумайте о результатах поиска и событии SearchFinished).
Я хотел бы переместить фокус клавиатуры на первый элемент в ItemsControl, но когда я делаю это в коде программной части представления при обработке SearchFinished, элементы еще не отображаются (коллекция уже заполнена, но визуализация wpf асинхронна и не выполняется) пока не произошло), поэтому фокусироваться не на чем (Focus () должен иметь уже построенное визуальное дерево элементов).
Я хотел сделать (myItemsControl.ItemContainerGenerator.ContainerFromIndex (0) as UIElement) .Focus ();, но поскольку 0-й элемент еще не загружен, ContainerFromIndex (0) возвращает null.
Я попытался отложить его с помощью Dispatcher.BeginInvoke ... с низким приоритетом, но это зависит от точного времени и обычно не работает.
Как мне дождаться загрузки первого элемента ItemsControl?