2012-11-25 131 views
5

我有MainPageViewModel項目(ObservableCollection)。在這個頁面上我還有一個按鈕,可以爲項目添加新項目。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; 
    } 
    } 
} 

添加新項目的作品完美。

但是應用程序在墓碑後激活時,項目中的數據不會恢復。嘗試爲我的ViewModel創建StorageHandler。沒有幫助。我做錯了什麼?

public class MainPageViewModelStorage : StorageHandler<MainPageViewModel> { 
    public override void Configure() { 
    Property(x => x.Items) 
     .InAppSettings() 
     .RestoreAfterActivation(); 
    } 
} 

另請嘗試爲類和屬性添加[SurviveTombstone],但Visual Studio不知道該屬性。

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); 
     } 
    } 
    } 
} 

回答

4
  1. ,可以儲存不InAppSettingsInPhoneState
  2. 如果調用方法Configure,則檢查斷點。如果不是 - 你的引導程序出了問題。可能缺少PhoneContainer.RegisterPhoneServices()
  3. 打開在Visual Studio中捕獲第一次機會異常(Ctrl + Alt + E,並將複選框放在CLR異常中)。可能您的視圖模型無法正確反序列化。