Xamarin формы: почему Popupimage показывает 2 раза? - PullRequest
0 голосов
/ 16 января 2019

Я использую Rg.Plugins.Popup (1.1.4.129-бета) для показа popupimage. Я использую следующий код для показа popuppage.

await PopupNavigation.Instance.PushAsync(new UploadImagePopupPage(imagepath), true);

Мой выпуск

Иногда всплывающее окно показывает 2 раза.

Сценарий проблем

Сначала я звоню popupimage, как показано ниже, от одного contentpage.

//Checking one condition
if (_images.Count != 0)
{
   await PopupNavigation.Instance.PushAsync(new UploadImagePopupPage(picturepath), true);
}

В UploadImagePopupPage добавлен следующий код для показа изображения:

popupimage.Source = picturepath;   

Затем с UploadImagePopupPage отправляю сообщение, как показано ниже, при нажатии кнопки. В результате следующее изображение в observablecollection будет отображаться как всплывающее окно.

MessagingCenter.Send<UploadImagePopupPage>(this, "complete");

Затем снова вызовите popupimage с начальной страницы, как показано ниже:

MessagingCenter.Subscribe<UploadImagePopupPage>(this, "complete", (sender) =>
{
   ShowImagePopUp();
});

public async void ShowImagePopUp()
    {
        try
        {
            //Removing current popup
            await PopupNavigation.Instance.PopAsync();

             //Checking one condition
            if (Utility.picturecount < _images.Count)
            {
               // Following popup code invoking 2 times
                await PopupNavigation.Instance.PushAsync(new UploadImagePopupPage(_images[Utility.picturecount]), true);
            }
            else
            {
                _images.Clear();
                await Navigation.PopModalAsync();
            }
            Utility.loadPhotoAlbum = true;
        }
        catch (Exception e)
        {
            Debug.WriteLine("Exception:>>"+e);
        }
    }

Я реализовал это, чтобы показывать observablecollection изображений одно за другим как popup. Во всплывающем окне есть кнопка, и при нажатии на эту кнопку появляется только следующее всплывающее окно. Кто-нибудь сталкивается с этим типом проблемы?

1 Ответ

0 голосов
/ 16 января 2019

Вам необходимо отписаться от события в OnDisappearing

protected override void OnDisappearing() 
{ 
    base.OnDisappearing(); 

    MessagingCenter.Unsubscribe<UploadImagePopupPage>(this, "complete"); 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...