示例#1
0
        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);
            });
        }