WPF Items - wie Sie wissen, wenn die Einzelteile fertig geladen, so dass ich die ersten konzentrieren können?

StackOverflow https://stackoverflow.com/questions/2492214

Frage

Ich habe ein Itemscontrol in meiner Ansicht, die zu einer ObservableCollection von Viewmodel gebunden ist. Die Sammlung wird gefüllt, und danach ein Ereignis von VM Ansicht wird (man denke Ergebnisse Suche und SearchFinished Ereignis) angehoben.

Ich mag Tastaturfokus auf das erste Element in einem Itemscontrol bewegen, aber wenn ich es in Ansicht der Code-Behind tun, wenn SearchFinished Handhabung, werden die Elemente noch nicht gemacht (die Sammlung bereits gefüllt ist, aber wpf Die Wiedergabe ist asynchron und ist nicht geschehen noch) nicht, so gibt es nichts zu konzentrieren (focus () muss den Artikel visuelle Struktur bereits aufgebaut hat).

wollte ich (myItemsControl.ItemContainerGenerator.ContainerFromIndex (0) als UIElement) .Focus () tun ;, sondern als das 0-te Element ist noch nicht geladen, ContainerFromIndex (0) gibt null.

Ich habe versucht, es mit Dispatcher.BeginInvoke ... mit niedriger Priorität zu verzögern, aber das ist abhängig von den genauen Zeitpunkt und in der Regel nicht funktioniert.

Wie kann ich warten, bis das erste Element in Itemscontrol geladen wird?

War es hilfreich?

Lösung

Sie können das ItemContainerGenerator.StatusChanged Ereignis verwenden, und dann seine Status Eigenschaft überprüfen. Wenn die Status == GeneratorStatus.ContainersGenerated, dann können Sie sicher den ersten Behälter bekommen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top