ViewModel から ObservableCollection にバインドされているビューに ItemsControl があります。コレクションがいっぱいになり、その後、VM からビューへのイベントが発生します (検索結果と SearchFinished イベントを考えてください)。
キーボード フォーカスを ItemsControl の最初の項目に移動したいのですが、SearchFinished を処理するときに View のコード ビハインドでそれを行うと、項目はまだレンダリングされていません (コレクションは既に満たされていますが、wpf のレンダリングは非同期でありませんでした。そのため、フォーカスするものは何もありません (Focus() はアイテムのビジュアル ツリーを既に構築しておく必要があります)。
(myItemsControl.ItemContainerGenerator.ContainerFromIndex(0) as UIElement).Focus();したかったのですが、0番目のアイテムがまだ読み込まれていないため、ContainerFromIndex(0)がnullを返します。
優先度の低い Dispatcher.BeginInvoke... で遅らせてみましたが、それは正確なタイミングに依存し、通常は機能しません。
ItemsControl の最初の項目が読み込まれるまで待つにはどうすればよいですか?