Пример #1
0
        /// <summary>
        /// Creates an appropriate ViewModel for a type of component parameter, and the parameter is taken as the model.
        /// Throws an exception if can't create the ViewModel.
        /// </summary>
        /// <param name="component">Quest Component that will be a model for a ViewModel instance.</param>
        /// <returns></returns>
        public static AbstractComponentViewModel CreateComponentViewModel(AbstractQuestComponent component)
        {
            if (component is null)
            {
                throw new ArgumentNullException(nameof(component));
            }

            AbstractComponentViewModel componentViewModel = null;

            switch (component.GetType().Name)
            {
            case nameof(DescriptionComponent):
                var descriptionComponent = component as DescriptionComponent;
                var descriptionViewModel = new DescriptionComponentViewModel(descriptionComponent);
                componentViewModel = descriptionViewModel;
                break;

            case nameof(ProgressComponent):
                var progressComponent = component as ProgressComponent;
                var progressViewModel = new ProgressComponentViewModel(progressComponent);
                componentViewModel = progressViewModel;
                break;

            default:
                throw new ArgumentException($"Can't create ViewModel for {component.GetType().FullName}.");
            }

            return(componentViewModel);
        }
Пример #2
0
        void SetDescriptionComponentBindings(DescriptionComponentViewModel descriptionViewModel, DetailQuestView detailQuestView)
        {
            if (descriptionViewModel is null)
            {
                throw new ArgumentNullException(nameof(descriptionViewModel));
            }

            if (detailQuestView is null)
            {
                throw new ArgumentNullException(nameof(detailQuestView));
            }

            detailQuestView.TitleEntry.IsVisible       = true;
            detailQuestView.DescriptionEntry.IsVisible = true;

            var TitleTextBinding = new Binding
            {
                Source = descriptionViewModel,
                Path   = nameof(descriptionViewModel.Title),
                Mode   = BindingMode.TwoWay
            };

            detailQuestView.TitleEntry.SetBinding(Entry.TextProperty, TitleTextBinding);

            var DescriptionTextBinding = new Binding
            {
                Source = descriptionViewModel,
                Path   = nameof(descriptionViewModel.Description),
                Mode   = BindingMode.TwoWay
            };

            detailQuestView.DescriptionEntry.SetBinding(Entry.TextProperty, DescriptionTextBinding);
        }