Как отклонить несколько (всех) модалов одновременно?

#c# #xamarin.forms #xamarin.android #modal-dialog

#xamarin.forms

Вопрос:

Есть ли способ отклонить несколько модалов или только один за другим, как это: Navigation.ModalPopAsync() ?

Ответ №1:

Я на самом деле написал что-то, чтобы открыть все модалы.

Это работает, сначала выясняя, сколько модалов активно, а затем выталкивая их.

И да, как Рохит Випин Мэтьюз упомянул в своем ответе, PopModalAsync(false); удалит анимацию.

 // Get number of modals on the Navigation Stack
int numModals = Application.Current.MainPage.Navigation.ModalStack.Count;

// Pop each modal in the stack
for (int currModal = 0; currModal < numModals; currModal  )
{
    await Application.Current.MainPage.Navigation.PopModalAsync();
}
  

Комментарии:

1. вы также можете передать false в . PopModalAsync(), чтобы сделать это без анимации

Ответ №2:

Для модалов вы должны выполнять одно за другим, потому что его Modal Stack можно использовать в стеке навигации For Navigation.PopToRootAsync()

Также вы можете попробовать не await Navigation.ModalPopAsync() то, а также передать анимацию как false.

Вы можете найти более подробную информацию в этом сообщении на форуме- PopToRootAsync с модальным

Комментарии:

1. здесь они заявляют, что не ожидание может привести к тупиковой ситуации developer.xamarin.com/api/member /…

2. В нем говорится: вызов Task.Wait может привести к взаимоблокировке, если предыдущий вызов INavigation . PushModal или INavigation. PopModal не завершен. Но да, лучше всего await