#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