2016-05-09 5 views
0

Ich habe eine DataModel Klasse, die INotifyPropertyChanged Methode enthält.Listview ist nicht nach dem Sortieren (Windows Phone)

Dann zuweisen ich ListView.ItemsSource der Observable Collection des DataModel.

Wenn der Sammlung ein neues Element hinzugefügt wird, wird das ListView korrekt aktualisiert. Aber wenn ich versuche, um die Liste zu sortieren:

IssuesList = new ObservableCollection<Issue>(IssuesList.OrderBy(x => x.name).ToList()); 

Das Listview nicht automatisch aktualisiert wird (um nicht geändert). Die ListView wird nur geändert, wenn ich ItemsSource für die Listview erneut einstelle.

Wie kann ich die ListView-Aktualisierungen automatisch vornehmen, wenn die Reihenfolge der Elemente geändert wird? Vielen Dank für Ihre Hilfe.

Antwort

0

Dies geschieht, weil Sie die Instanz ermitteln. Eine beobachtbare Auflistung löst nur dann Aktualisierungen der Benutzeroberfläche aus, wenn ihre Elemente geändert wurden, nicht jedoch beim Ersetzen der Instanz.

Sie müssen das propertychanged-Ereignis auslösen, nachdem Sie die Sammlung durch die neue sortierte ersetzt haben. Abhängig davon, wie Sie das Benachrichtigungsereignis implementiert haben:

NotifyPropertyChanged("IssuesList"); 
+0

Vielen Dank für Ihre Antwort. Ich verstehe, was Sie gesagt haben, aber ich bin mir nicht sicher, wie Sie es implementieren. Ich definierte eine Klasse namens "Issue", und "IssueList" wird in MainPage.xaml.cs (sort-Methode auch) initiiert. Ich weiß nur, wie NotifyPropertyChanged für eine Eigenschaft der Klasse, nicht für eine Sammlung zu reaize. Kannst du mir zeigen wie? – Martin

+0

Die Sammlung ist eine Eigenschaft Ihrer Klasse, oder? – Fred

+0

Nein, ich habe nie eine Sammlung in einer Model-Klasse definiert (ich bin ein Neuling). Also, was ich tun muss, ist Hinzufügen der Auflistung der IssueList der Klasse eine Anwendung NotifyPropertyChanged für sie? – Martin