У меня есть MainPage (привязанный к MainPageViewModel) с CollectionView ItemViewModel.
Я добавил в XAML поведение жеста, чтобы реагировать на двойное нажатие на каждую из представленных ItemViewModel, которое запускает переход на мою вторую страницу: SelectPage< /code>.
Я выполнил маршрутизацию навигации относительным способом, поэтому могу вернуться назад с помощью встроенной кнопки возврата на панели навигации.
Я тестирую эта навигация от перемещения вперед и назад между двумя моими страницами, пока она не вспыхнет с необработанным исключением Microsoft.UI.Xaml.Controls.Frame.NavigationFailed. в сгенерированном файле App.g.I.cs.
Это может произойти при любом способе навигации (либо при переходе на вторую страницу, либо при возврате на главную).
Это исключение возникает через некоторое время, но без какой-либо особой закономерности (может быть Например, 5-й или 13-й раз навигации).
(ОБРАТИТЕ ВНИМАНИЕ, что при использовании ScreenToGif для записи этой проблемы на видео до сих пор всегда происходит сбой при второй навигации ?!)
Вторая ошибка отладчика в App.g.i.cs связана с исключением System.Runtime.InteropServices.COMException перед закрытием приложения.
Вот мой простой проект на GitHub для проверки кода.
А вот мое видео, иллюстрирующее эту проблему.
Трассировка стека показана на рисунке конец :
Код: Выделить всё
at WinRT.ExceptionHelpers.g__Throw|38_0(Int32 hr)
at ABI.Microsoft.UI.Xaml.Controls.IFrameMethods.Navigate(IObjectReference _obj, Type sourcePageType, Object parameter, NavigationTransitionInfo infoOverride)
at Microsoft.Maui.Platform.StackNavigationManager.NavigateTo(NavigationRequest args)
at Microsoft.Maui.CommandMapper.InvokeCore(String key, IElementHandler viewHandler, IElement virtualView, Object args)
at Microsoft.Maui.Controls.Handlers.ShellSectionHandler.SyncNavigationStack(Boolean animated, NavigationRequestedEventArgs e)
at Microsoft.Maui.Controls.Handlers.ShellSectionHandler.OnNavigationRequested(Object sender, NavigationRequestedEventArgs e)
at Microsoft.Maui.Controls.ShellSection.InvokeNavigationRequest(NavigationRequestedEventArgs args)
at Microsoft.Maui.Controls.ShellSection.OnPushAsync(Page page, Boolean animated)
at Microsoft.Maui.Controls.ShellSection.PushStackOfPages(List`1 pages, Nullable`1 animate)
at Microsoft.Maui.Controls.ShellSection.GoToAsync(ShellNavigationRequest request, ShellRouteParameters queryData, IServiceProvider services, Nullable`1 animate, Boolean isRelativePopping)
at Microsoft.Maui.Controls.ShellNavigationManager.GoToAsync(ShellNavigationParameters shellNavigationParameters, ShellNavigationRequest navigationRequest)
at TestinMAUIPageNavigationPerf.Sources.ViewModels.ItemViewModel.SelectItem()
Но простое добавление простого внутри приводит к повторному сбою.
EDIT Я упростил код, чтобы на MainPage была только кнопка, которая запускает навигацию, и одна метка на странице SelectPage. Это по-прежнему приводит к сбою приложения по одному и тому же сценарию (переход между двумя страницами).
Для справки и вашего любопытства вот видео этой упрощенной версии, которая в конце концов все равно вылетает.< /п>
Подробнее здесь: https://stackoverflow.com/questions/790 ... ly-windows
Мобильная версия