2009-03-10 6 views
0

Ich habe ein UserControl, das eine ListView hat, die eine Liste der Client-Objekte zeigt. Durch Doppelklicken auf eine der Zeilen wird eine Animation abgespielt und zu einem anderen UserControl übergegangen, das die Liste der Konten für diesen Client anzeigt.WPF: Show UserControl, bevor alle gebundenen Eigenschaften geladen werden

Das zweite Benutzersteuerelement ist an die Eigenschaft Accounts des Clientobjekts gebunden. Die Liste der Konten wird beim ersten Zugriff auf die Eigenschaft geladen. Das alles funktioniert gut, wenn die Liste der Konten klein ist. Wenn die Liste der Konten groß ist, gibt es eine merkliche Verzögerung zwischen dem Doppelklicken und der Liste der Konten, die angezeigt werden. Und die Animation spielt überhaupt nicht.

Ich verstehe, was hier vor sich geht, aber ich bin mir nicht sicher über den besten Weg, es zu beheben. Wie würde ich es so machen, dass die Animation noch abgespielt wird und das zweite Benutzersteuerelement angezeigt wird, aber die Liste der Konten erscheint, wie sie geladen sind? Ich verstehe, dass ich die Listenansicht asynchron laden muss, und ich habe kein Problem mit einem BackgroundWorker dafür, aber ich bin mir nicht sicher, wo dieses Laden passieren würde.

Die Liste der Konten ist eine ObservableCollection, und das Clientobjekt implementiert INotifyPropertyChanged, ruft jedoch nicht PropertyChanged für die Eigenschaft "accounts" auf, da es keinen Setter hat.

Antwort

1

Ich denke, Sie müssen die virtualisierten Steuerelemente in WPF betrachten - diese zeigen nur die Inhalte nicht die gesamte Liste erforderlich und sind daher viel schneller als die Standard-ListView.

1

können Sie versuchen, und setzen isAsync = true auf die Bindung, zum Beispiel: {Binding Path = Accouns, isAsync = true}