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