public QuestPageViewModel(AbstractQuest questToDisplay, IPageNavigator pageNavigator) { if (questToDisplay is null) { throw new ArgumentNullException(nameof(questToDisplay)); } if (pageNavigator is null) { throw new ArgumentNullException(nameof(pageNavigator)); } displayedQuest = new QuestViewModel(questToDisplay); steps = new ObservableCollection <QuestViewModel>(); Steps = new ReadOnlyObservableCollection <QuestViewModel>(steps); (displayedQuest.SourceModel.Steps as INotifyCollectionChanged).CollectionChanged += QuestPageViewModel_StepsCollectionChanged; foreach (var stepQuest in displayedQuest.SourceModel.Steps) { if (stepQuest != null) { steps.Add(new QuestViewModel(stepQuest)); } } DeleteQuestCommand = new Command(() => { QuestRegistry.Instance.UnregisterQuest(displayedQuest.SourceModel); pageNavigator.ToMainPage(); }); }