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