Я использую этот простой метод для навигации по приложению:
Код: Выделить всё
public async Task NavigateTo(Type kioskPage)
{
try
{
if (Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.HasThreadAccess)
{
Frame.Navigate(kioskPage, KioskModel);
}
else
{
await Task.Run(() => Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
Frame.Navigate(kioskPage, KioskModel);
}));
}
}
catch (Exception ex)
{
//maybe a race condition
Task.Delay(500).Wait();
try
{
await Task.Run(() => Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
Frame.Navigate(kioskPage, KioskModel);
}));
}
catch (Exception ex2)
{
HandleError(ex2, TrackedEventSources.Code, false, "Double thread exception", true, "NavigateTo");
}
}
}
Код: Выделить всё
await NavigateTo(typeof(MainView), aModel);
< /code>
Это работает, будь то в основном потоке или на фоне. Сброс до 0? Или что -то я делаю не так с точки зрения того, как я навигации? < /P>
Я могу позвонить: < /p>
Frame.BackStatck.Clear();
Подробнее здесь: https://stackoverflow.com/questions/793 ... ear-frames
Мобильная версия