2012-11-25 18 views
5

Ich habe MainPageViewModel mit Elementen (ObservableCollection). Auf dieser Seite habe ich auch einen Button, der Items neue Items hinzufügt.Tombstoning in Caliburn Micro

public class MainPageViewModel : Screen { 
    private DateTime StartActivity = DateTime.MinValue; 

    public ObservableCollection<ActivityViewModel> Items { get; set; } 

    public MainPageViewModel(INavigationService navigationService) { 
    this.Items = new ObservableCollection<ActivityViewModel>(); 
    } 

    public void AddActivity(string activityName) { 
    if (this.Items.Count == 0) { 
     this.Items.Add(new ActivityViewModel() { 
     Activity = activityName, 
     Duration = 0 
     }); 

     StartActivity = DateTime.Now; 
     } 
    else { 
     this.Items[this.Items.Count - 1].Duration = 10; 
     this.Items.Add(new ActivityViewModel() { 
     Activity = activityName, 
     Duration = 0 
     }); 

     StartActivity = DateTime.Now; 
    } 
    } 
} 

Hinzufügen neuer Artikel funktioniert perfekt.

Die Daten von Elementen werden jedoch nicht wiederhergestellt, wenn die Anwendung nach dem Grabsteinwechsel aktiviert wird. Versuchen Sie StorageHandler für mein ViewModel zu erstellen. Hilft nicht. Was mache ich falsch?

Versuchen Sie auch, [SurviveTombstone] für Klasse und Eigenschaft hinzuzufügen, aber Visual Studio kennt dieses Attribut nicht.

public class ActivityViewModel : PropertyChangedBase { 
    private string _activity; 
    public string Activity { 
    get { 
     return _activity; 
    } 
    set { 
     if (value != _activity) { 
     _activity = value; 
     NotifyOfPropertyChange(() => Activity); 
     } 
    } 
    } 

    private double _duration; 
    public double Duration { 
    get { 
     return _duration; 
    } 
    set { 
     if (value != _duration) { 
     _duration = value; 
     NotifyOfPropertyChange(() => Duration); 
     } 
    } 
    } 
} 

Antwort

4
  1. Sie sollten nicht InAppSettings speichern, sondern InPhoneState.
  2. Mit Haltepunkt prüfen, wenn Methode Configure aufgerufen wird. Wenn nicht - stimmt etwas nicht mit Ihrem Bootstrapper. Wahrscheinlich PhoneContainer.RegisterPhoneServices() fehlt
  3. Aktivieren Sie die erste Chance Ausnahme in Visual Studio (Strg + Alt + E, und setzen Sie Kontrollkästchen gegen CLR-Ausnahmen). Wahrscheinlich kann Ihr Ansichtsmodell nicht richtig deserialisiert werden.
Verwandte Themen