Beispiel #1
0
        public override void ViewWillAppear(bool animated)
        {
            base.ViewWillAppear(animated);

            Style.ApplyRootView(View);

            new ConnectorUIImageView(Poster, _viewModel, nameof(ViewModelMovieDetails.PosterURL));
            new ConnectorUITableView <ListItemMovieAttributeBase>(MovieAttributes, UITableViewCellStyle.Default, 20, _viewModel, nameof(ViewModelMovieDetails.Attributes), null, (item, cell) =>
            {
                if (item is ListItemMovieAttributeLabel)
                {
                    ListItemMovieAttributeLabel label = (ListItemMovieAttributeLabel)item;

                    cell.TextLabel.Text = label.Label;
                    Style.ApplyMovieAttributeLabel(cell.TextLabel);
                }
                else
                {
                    ListItemMovieAttributeValue value = (ListItemMovieAttributeValue)item;

                    cell.TextLabel.Text = value.Value;
                }
            });
            new ConnectorUITextView(Plot, _viewModel, nameof(ViewModelMovieDetails.Plot));
            new ConnectorUIButton(IMDBWebsite, _viewModel.CommandBrowseToMovie);

            _viewModel.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == nameof(ViewModelMovieDetails.Title))
                {
                    SetNavigationBarTitle();
                }
            };
            SetNavigationBarTitle();
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            ViewModelState.Initialise(new NavigationService(this), new DeviceIntegration(this));

            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.MovieDetails);

            var toolbar = FindViewById <Toolbar>(Resource.Id.toolbar);

            SetSupportActionBar(toolbar);

            ViewModelMovieDetails viewModel = new ViewModelMovieDetails();

            viewModel.Initialise();

            SupportActionBar.Title     = viewModel.Title;
            viewModel.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == nameof(ViewModelMovieDetails.Title))
                {
                    SupportActionBar.Title = viewModel.Title;
                }
            };

            new ConnectorImageView(FindViewById <ImageView>(Resource.Id.poster), viewModel, nameof(ViewModelMovieDetails.PosterURL));
            new ConnectorListView <ListItemMovieAttributeBase>(this, FindViewById <ListView>(Resource.Id.attributes), viewModel, nameof(ViewModelMovieDetails.Attributes), null,
                                                               (item) =>
            {
                if (item is ListItemMovieAttributeLabel)
                {
                    return(Resource.Layout.TemplateListItemAttributeLabel);
                }
                return(Resource.Layout.TemplateListItemAttributeValue);
            },
                                                               (context, item, view, parent) =>
            {
                LayoutInflater layoutInflator = context.GetSystemService(Context.LayoutInflaterService) as LayoutInflater;

                if (item is ListItemMovieAttributeLabel)
                {
                    ListItemMovieAttributeLabel label = (ListItemMovieAttributeLabel)item;

                    view = layoutInflator.Inflate(Resource.Layout.TemplateListItemAttributeLabel, parent, false);
                    view.FindViewById <TextView>(Resource.Id.listItemMovieAttributeLabel).Text = label.Label;
                }
                else
                {
                    ListItemMovieAttributeValue value = item as ListItemMovieAttributeValue;
                    view = layoutInflator.Inflate(Resource.Layout.TemplateListItemAttributeValue, parent, false);

                    view.FindViewById <TextView>(Resource.Id.listItemMovieAttributeValue).Text = value.Value;
                }

                return(view);
            });
            new ConnectorTextView(FindViewById <TextView>(Resource.Id.plot), viewModel, nameof(ViewModelMovieDetails.Plot));
            new ConnectorButton(FindViewById <Button>(Resource.Id.imdbWebsite), viewModel.CommandBrowseToMovie);
        }