dieses Datenmodell auf realm.io basierend Angenommen:Aktualisierung Listview durch geändert Realmlist <>
public class JournalEntry : RealmObject {
...
}
public class JournalOwner : RealmObject {
...
public RealmList<JournalEntry> Entries { get; }
}
Ich habe ein JournalEntriesPage, die zeigen eine Listview aller JournalEntry Elemente einer JournalOwner.
Im Inneren der entsprechenden Ansicht Modell, passiere ich die JournalOwner an den Konstruktor und weisen Sie den JournalOwner.Entries auf die Eigenschaft Einträge.
public class JournalEntriesViewModel {
private Realm _realm;
private JournalOwner _owner;
public RealmList<JournalEntry> Entries {
get { return _owner.Entries; }
}
....
public JournalEntriesViewModel(JournalOwner owner) {
_realm = Realm.GetInstance();
_owner = owner;
AddEntryCommand = new Command(AddEntry);
DeleteEntryCommand = new Command<JournalEntry>(DeleteEntry);
}
Wenn ich ein JournalEntry über die Benutzeroberfläche hinzufügen, es erstellt wird, scheint aber nicht in dem Listview.
Wenn ich die Navigation nach oben (zu JournalOwner) und dann hinunter auf die Einträge des Eigentümers, der Listview zeigt die neu geschaffenen JournalEntry.
Irgendwie der Listview von JournalEntry s nicht weiß, über die neu geschaffene JournalEntry.
Die JournalEntriesPage bindet das Listview wie folgt:
<ListView
ItemsSource="{Binding Entries}"
x:Name="EntriesListView"
ItemTapped="OnItemTapped"
ItemSelected="OnItemSelected" >
Wie Räude ich die Listview sofort neu erstellten Einträge zeigen?
Ich fühle, dass ich Beobachter (?) Von Einträgen irgendwie informieren muss, dass sein Wert sich geändert hat.
In einer entsprechenden Situation, Änderungen der Einträge von
Owners = _realm.All<JournalOwner>();
Sie die entsprechende Listview zwingen, sofort zu ändern.
RealmList muss eine geänderte INotifyCollection implementieren, damit ListView über Aktualisierungen benachrichtigt wird. – Jason
@Jason Wenn in einer anderen Klasse Änderungen an _realm.All() in der ListView reflektiert werden, implementiert RealmList nicht INotifyCollection? –
SteAp
Ich habe noch keine Hände mit Realm gemacht, also kann ich nicht sicher sagen – Jason