public MainPageViewModel(IPageNavigator pageNavigator, UserStatistic userStatistic) { if (pageNavigator is null) { throw new ArgumentNullException(nameof(pageNavigator)); } if (userStatistic is null) { throw new ArgumentNullException(nameof(UserStatistic)); } questCreator = new QuestCreator(); allQuests = new ObservableCollection <QuestViewModel>(); AllQuests = new ReadOnlyObservableCollection <QuestViewModel>(allQuests); (QuestRegistry.Instance.Quests as INotifyCollectionChanged).CollectionChanged += AllQuestViewModels_CollectionChanged; this.PageNavigator = pageNavigator; this.UserStatistic = userStatistic; this.UserStatistic.Recalculated += OnStatisticRecalculated; AddNewQuestCommand = new Command(() => { var newQuest = questCreator.CreateQuest(); var descriptionComponent = newQuest.GetComponent <DescriptionComponent>(); descriptionComponent.Title = "Title"; descriptionComponent.Description = "Description"; OpenQuestPageCommand.Execute(newQuest); }); OpenQuestPageCommand = new Command <AbstractQuest>((quest) => { PageNavigator.ToQuestPage(quest); }); }