2012-11-25 37 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异常中)。可能您的视图模型无法正确反序列化。