Inheritance: BindableBase
 public async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary<string, object> state)
 {
     if (state.Any())
     {
         Sub = JsonConvert.DeserializeObject<SubredditItem>((string)state["sub"]);
         Images = IncrementalSubredditGallery.fromJson((string)state["images"]);
         state.Clear();
     }
     else
     {
         if (mode == NavigationMode.Back)
         {
             if (galleryMetaInfo == null)
             {
                 galleryMetaInfo = BootStrapper.Current.SessionState["GalleryInfo"] as GalleryMetaInfo;
                 Images = galleryMetaInfo?.Gallery as IncrementalSubredditGallery;
                 var sub = (await Reddits.SearchSubreddits(Images.Subreddit)).First(s => s.Data.DisplayName == Images.Subreddit);
                 Sub = new SubredditItem(sub);
             }
             ImageSelectedIndex = galleryMetaInfo?.SelectedIndex ?? 0;
         }
         else
         {
             Activate(parameter);
         }
     }
     await Task.CompletedTask;
 }
 private View GetSubredditView(int position, SubredditItem item, View convertView)
 {
     View ret = convertView ?? Activity.LayoutInflater.Inflate(Resource.Layout.Tmpl_SubredditItem, null);
     ret.FindViewById<TextView>(Resource.Id.TitleTextView).Text = item.Title;
     ret.FindViewById<TextView>(Resource.Id.SubtitleTextView).Text = $"/r/{item.Url}";
     return ret;
 }
 public async Task RemoveSubreddit(SubredditItem subreddit)
 {
     subreddit.IsFavorited = false;
     Subreddits.Remove(Subreddits.Where(s => s.Url == subreddit.Url).First());
     await SaveSubreddits();            
 }
 public async Task AddSubreddit(SubredditItem subreddit)
 {
     subreddit.IsFavorited = true;
     Subreddits.Insert(0, subreddit);
     await SaveSubreddits();
 }
 protected void NavigateToSub(SubredditItem sub)
 {
     string navigationParamName = "Subreddit";
     StateHelper.SessionState[navigationParamName] = sub;
     navigationService.NavigateTo(PageKeyHolder.SubGalleryPageKey, navigationParamName);            
 }
        private void BindRedditView(CachingViewHolder holder, SubredditItem item, int position)
        {
            holder.FindCachedViewById<TextView>(Resource.Id.TitleTextView).Text = item.Title.Replace("&amp;", "&");
            holder.FindCachedViewById<TextView>(Resource.Id.SubtitleTextView).Text = $"/r/{item.Url} • {item.Subscribers} Subscribers";

            var addButton = holder.FindCachedViewById<View>(Resource.Id.AddButton);
            var addButtonVisibilityBinding = new Binding<bool, ViewStates>(item, () => item.IsFavorited, addButton, () => addButton.Visibility).ConvertSourceToTarget((flag) => flag ? ViewStates.Gone : ViewStates.Visible);
            holder.DeleteBinding(nameof(addButtonVisibilityBinding)); 
            holder.SaveBinding(nameof(addButtonVisibilityBinding), addButtonVisibilityBinding);

            //addButton.SetCommand("Click", Vm.ToggleFavorite, item);

            var checkButton = holder.FindCachedViewById<View>(Resource.Id.CheckButton);
            var checkButtonVisibilityBinding = new Binding<bool, ViewStates>(item, () => item.IsFavorited, checkButton, () => checkButton.Visibility).ConvertSourceToTarget((flag) => !flag ? ViewStates.Gone : ViewStates.Visible);
            holder.DeleteBinding(nameof(checkButtonVisibilityBinding));
            holder.SaveBinding(nameof(checkButtonVisibilityBinding), checkButtonVisibilityBinding);

            //checkButton.SetCommand("Click", Vm.ToggleFavorite, item);

            var toggleContainer = holder.FindCachedViewById<View>(Resource.Id.ToggleContainer);
            toggleContainer.SetCommand("Click", Vm.ToggleFavorite, item);
        }