private void ViewModelOnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
 {
     if (propertyChangedEventArgs.PropertyName == nameof(ViewModel.DetailImage))
     {
         if (AnimeDetailsPageShowCoverImage != null)
         {
             ImageService.Instance.LoadUrl(ViewModel.DetailImage, TimeSpan.FromDays(7))
             .FadeAnimation(false).Success(() => AnimeDetailsPageShowCoverImage.AnimateFadeIn())
             .Into(AnimeDetailsPageShowCoverImage);
         }
     }
 }
        protected override void InitBindings()
        {
            AnimeDetailsPagePivot.Adapter = new AnimeDetailsPagerAdapter(ChildFragmentManager);
            AnimeDetailsPageTabStrip.SetViewPager(AnimeDetailsPagePivot);
            AnimeDetailsPageTabStrip.CenterTabs();
            AnimeDetailsPagePivot.SetCurrentItem(_navArgs.SourceTabIndex, false);
            AnimeDetailsPagePivot.OffscreenPageLimit = 7;

            AnimeDetailsPagePivot.AddOnPageChangeListener(
                new OnPageChangedListener(i => ViewModel.DetailsPivotSelectedIndex = i));

            Bindings.Add(
                this.SetBinding(() => ViewModel.MyScoreBind,
                                () => AnimeDetailsPageScoreButton.Text));
            Bindings.Add(
                this.SetBinding(() => ViewModel.MyStatusBind,
                                () => AnimeDetailsPageStatusButton.Text));
            Bindings.Add(
                this.SetBinding(() => ViewModel.MyEpisodesBind,
                                () => AnimeDetailsPageWatchedButton.Text));
            Bindings.Add(
                this.SetBinding(() => ViewModel.MyVolumesBind,
                                () => AnimeDetailsPageReadVolumesButton.Text));
            Bindings.Add(
                this.SetBinding(() => ViewModel.LoadingGlobal,
                                () => AnimeDetailsPageLoadingOverlay.Visibility)
                .ConvertSourceToTarget(Converters.BoolToVisibility));

            Bindings.Add(this.SetBinding(() => ViewModel.IsIncrementButtonEnabled).WhenSourceChanges(() =>
            {
                AnimeDetailsPageIncrementButton.Alpha = ViewModel.IsIncrementButtonEnabled ? 1 : .35f;
            }));
            Bindings.Add(this.SetBinding(() => ViewModel.IsDecrementButtonEnabled).WhenSourceChanges(() =>
            {
                AnimeDetailsPageDecrementButton.Alpha = ViewModel.IsDecrementButtonEnabled ? 1 : .35f;
            }));

            Bindings.Add(this.SetBinding(() => ViewModel.AddAnimeVisibility)
                         .WhenSourceChanges(() =>
            {
                if (ViewModel.AddAnimeVisibility)
                {
                    AnimeDetailsPageIncDecSection.Visibility   = ViewStates.Gone;
                    AnimeDetailsPageUpdateSection.Visibility   = ViewStates.Gone;
                    AnimeDetailsPageAddSection.Visibility      = ViewStates.Visible;
                    AnimeDetailsPageFavouriteButton.Visibility = ViewStates.Gone;
                }
                else
                {
                    AnimeDetailsPageIncDecSection.Visibility   = ViewStates.Visible;
                    AnimeDetailsPageUpdateSection.Visibility   = ViewStates.Visible;
                    AnimeDetailsPageAddSection.Visibility      = ViewStates.Gone;
                    AnimeDetailsPageFavouriteButton.Visibility = ViewStates.Visible;
                }
            }));

            Bindings.Add(
                this.SetBinding(() => ViewModel.DetailsPivotSelectedIndex)
                .WhenSourceChanges(
                    () => AnimeDetailsPagePivot.SetCurrentItem(ViewModel.DetailsPivotSelectedIndex, true)));


            Bindings.Add(
                this.SetBinding(() => ViewModel.IsFavourite)
                .WhenSourceChanges(() =>
            {
                if (ViewModel.IsFavourite)
                {
                    AnimeDetailsPageFavouriteButton.ImageTintList = ColorStateList.ValueOf(Color.White);
                    AnimeDetailsPageFavouriteButton.SetImageResource(Resource.Drawable.icon_favourite);
                    AnimeDetailsPageFavouriteButton.SetBackgroundResource(ResourceExtension.AccentColourRes);
                }
                else
                {
                    AnimeDetailsPageFavouriteButton.ImageTintList = ColorStateList.ValueOf(new Color(ResourceExtension.BrushText));
                    AnimeDetailsPageFavouriteButton.SetImageResource(Resource.Drawable.icon_unfavourite);
                    AnimeDetailsPageFavouriteButton.SetBackgroundColor(Color.Transparent);
                }
            }));


            Bindings.Add(this.SetBinding(() => ViewModel.AnimeMode)
                         .WhenSourceChanges(() =>
            {
                if (ViewModel.AnimeMode)
                {
                    AnimeDetailsPageReadVolumesButton.Visibility    =
                        AnimeDetailsPageReadVolumesLabel.Visibility = ViewStates.Gone;
                }
                else
                {
                    AnimeDetailsPageReadVolumesButton.Visibility    =
                        AnimeDetailsPageReadVolumesLabel.Visibility = ViewStates.Visible;
                }
            }));

            Bindings.Add(this.SetBinding(() => ViewModel.DetailImage)
                         .WhenSourceChanges(() =>
            {
                AnimeDetailsPageShowCoverImage.Visibility = ViewStates.Invisible;
                AnimeDetailsPageShowCoverImage.Into(ViewModel.DetailImage);
            }));

            Bindings.Add(
                this.SetBinding(() => ViewModel.LoadingUpdate,
                                () => AnimeDetailsPageLoadingUpdateSpinner.Visibility)
                .ConvertSourceToTarget(Converters.BoolToVisibility));

            Bindings.Add(
                this.SetBinding(() => ViewModel.IsAddAnimeButtonEnabled,
                                () => AnimeDetailsPageAddButton.Enabled));

            AnimeDetailsPageFavouriteButton.SetOnClickListener(
                new OnClickListener(view => ViewModel.ToggleFavouriteCommand.Execute(null)));
            AnimeDetailsPageIncrementButton.SetOnClickListener(
                new OnClickListener(view => ViewModel.IncrementEpsCommand.Execute(null)));
            AnimeDetailsPageDecrementButton.SetOnClickListener(
                new OnClickListener(view => ViewModel.DecrementEpsCommand.Execute(null)));
            AnimeDetailsPageAddButton.SetOnClickListener(
                new OnClickListener(view => ViewModel.AddAnimeCommand.Execute(null)));
            AnimeDetailsPageMoreButton.SetOnClickListener(new OnClickListener(view =>
            {
                _menu = AnimeDetailsPageMoreFlyoutBuilder.BuildForAnimeDetailsPage(Activity, ViewModel,
                                                                                   AnimeDetailsPageMoreButton,
                                                                                   OnMoreFlyoutClick);
                _menu.Show();
            }));
            ImageContainer.SetOnClickListener(new OnClickListener(view =>
                                                                  KeyImageDialog.Instance.ShowDialog(Activity, ViewModel.DetailImage)));



            //OneTime

            AnimeDetailsPageWatchedLabel.Text = ViewModel.WatchedEpsLabel;



            //

            //Events
            AnimeDetailsPageStatusButton.SetOnClickListener(
                new OnClickListener(view => AnimeDetailsPageStatusButtonOnClick()));
            AnimeDetailsPageScoreButton.SetOnClickListener(
                new OnClickListener(view => AnimeDetailsPageScoreButtonOnClick()));
            AnimeDetailsPageWatchedButton.SetOnClickListener(
                new OnClickListener(view => AnimeDetailsPageWatchedButtonOnClick()));
            AnimeDetailsPageReadVolumesButton.SetOnClickListener(
                new OnClickListener(view => AnimeDetailsPageVolumesButtonOnClick()));
        }