public void ShowAsModal()
        {
            joinButton = new API.Avarice.Controls.Button();
            joinButton.Content = AppResources.GroupJoinText;
            joinButton.Click += (sender, e) => {
                JoinGroup();
            };

            browseButton = new API.Avarice.Controls.Button();
            browseButton.Content = AppResources.GroupBrowseText;
            browseButton.Click += (sender, e) => {
                BrowseGroup();
            };

            doneButton = new API.Avarice.Controls.Button();
            doneButton.Content = AppResources.GenericDoneText;
            doneButton.Click += (sender, e) => {
                _popupContainer.Dismiss();
            };

            if (!_group.IsInfoRetrieved)
            {
                joinButton.IsEnabled = false;
                browseButton.IsEnabled = false;
            }

            _popupContainer = ModalPopup.ShowWithButtons(this, _group.Name, new List<Indulged.API.Avarice.Controls.Button> { browseButton, joinButton, doneButton }, false);
        }
        // Constructor
        public GroupJoiningRequestStatusView()
        {
            InitializeComponent();

            Buttons = new List<API.Avarice.Controls.Button>();
            doneButton = new API.Avarice.Controls.Button();
            doneButton.Content = AppResources.GenericDoneText;
            doneButton.Click += (sender, e) =>
            {
                PopupContainer.Dismiss();
            };

            Buttons.Add(doneButton);

            // Events
            Anaconda.AnacondaCore.JoinGroupRequestException += OnJoinGroupException;
            Anaconda.AnacondaCore.JoinGroupRequestComplete += OnJoinGroupComplete;
        }
        // Constructor
        public GroupJoinRequestView()
        {
            InitializeComponent();

            Buttons = new List<API.Avarice.Controls.Button>();
            confirmButton = new API.Avarice.Controls.Button();
            confirmButton.Content = AppResources.GenericConfirmText;
            confirmButton.Click += (sender, e) =>
            {
                JoinGroup();
            };

            cancelButton = new API.Avarice.Controls.Button();
            cancelButton.Content = AppResources.GenericCancelText;
            cancelButton.Click += (sender, e) =>
            {
                PopupContainer.Dismiss();
            };

            Buttons.Add(confirmButton);
        }
        // Constructor
        public GroupRulesView()
        {
            InitializeComponent();

            joinButton = new API.Avarice.Controls.Button();
            joinButton.Content = AppResources.GenericAgreeText;
            joinButton.Click += (sender, e) => {
                if (GroupSource.IsInvitationOnly)
                {
                    var requestView = new GroupJoinRequestView();
                    requestView.Group = GroupSource;
                    requestView.PopupContainer = PopupContainer;

                    PopupContainer.ReplaceContentWith(AppResources.GroupInvitationRequestText, requestView, requestView.Buttons);
                }
                else
                {
                    var statusView = new GroupJoiningStatusView();
                    statusView.Group = GroupSource;
                    statusView.PopupContainer = PopupContainer;

                    PopupContainer.ReplaceContentWith(AppResources.GroupJoiningText, statusView, statusView.Buttons, () =>
                    {
                        statusView.BeginJoinGroup();
                    });
                }

            };

            cancelButton = new API.Avarice.Controls.Button();
            cancelButton.Content = AppResources.GenericCancelText;
            cancelButton.Click += (sender, e) =>
            {
                PopupContainer.Dismiss();
            };

            Buttons = new List<API.Avarice.Controls.Button>();
            Buttons.Add(joinButton);
            Buttons.Add(cancelButton);
        }
        // Constructor
        public FavStatusView()
        {
            InitializeComponent();

            Buttons = new List<API.Avarice.Controls.Button>();
            doneButton = new API.Avarice.Controls.Button();
            doneButton.Content = AppResources.GenericDoneText;
            doneButton.Click += (sender, e) =>
            {
                PopupContainer.Dismiss();
            };

            Buttons.Add(doneButton);

            // Events
            Anaconda.AnacondaCore.PhotoInfoException += OnPhotoInfoException;
            Anaconda.AnacondaCore.AddPhotoAsFavouriteException += OnAddFavouriteException;
            Anaconda.AnacondaCore.RemovePhotoFromFavouriteException += OnRemoveFavouriteException;

            Cinderella.CinderellaCore.PhotoInfoUpdated += OnPhotoInfoUpdated;
            Cinderella.CinderellaCore.PhotoAddedAsFavourite += OnAddedAsFavourite;
            Cinderella.CinderellaCore.PhotoRemovedFromFavourite += OnRemovedFromFavourite;
        }
        private void OnUploadButtonTap(object sender, System.Windows.Input.GestureEventArgs e)
        {
            ContentView.IsHitTestVisible = false;

            statusView = new UploadStatusView();
            statusView.Height = 150;
            //settingsView.SetValue(Grid.RowProperty, 1);
            var returnButton = new Indulged.API.Avarice.Controls.Button();
            returnButton.Content = "Please Wait...";
            var buttons = new List<Indulged.API.Avarice.Controls.Button> { returnButton };
            statusDialog = ModalPopup.ShowWithButtons(statusView, "Uploading Photo", buttons);
            statusDialog.Buttons[0].IsEnabled = false;
            statusView.StatusLabel.Text = "Rendering image";
            statusDialog.DismissWithButtonClick += (s, args) =>
            {
                statusView = null;
                statusDialog = null;
                ContentView.IsHitTestVisible = true;

                uploadStream.Close();
                uploadStream = null;

                bitmapForUpload = null;

                // Dismiss the ProFX page
                if (RequestExit != null)
                {
                    RequestExit(this, null);
                }
            };

            PrepareImageForUploadAsync();
        }
        private void PerformDeletePhotoSet()
        {
            deletePhotoSetConfirmButton = new Button();
            deletePhotoSetConfirmButton.Content = AppResources.GenericConfirmText;
            deletePhotoSetConfirmButton.IsEnabled = false;

            deleteView = new DeletePhotoSetView();
            deletePhotoSetDialog = ModalPopup.ShowWithButtons(deleteView, "Sending Request", new List<Button> { deletePhotoSetConfirmButton });
            deletePhotoSetDialog.DismissWithButtonClick += (s, args) =>
            {
                deletePhotoSetDialog = null;
                deleteView = null;
                deletePhotoSetConfirmButton = null;

                if (NavigationService.CanGoBack)
                {
                    NavigationService.GoBack();
                    NavigationService.RemoveBackEntry();
                }
            };

            Anaconda.AnacondaCore.DeletePhotoSetAsync(PhotoSetSource.ResourceId);
        }