Мое приложение Xamarin Shell
имеет всплывающее меню, определенное следующим образом:
<?xml version = "1.0" encoding = "UTF-8"?>
<Shell xmlns = "http://xamarin.com/schemas/2014/forms"
xmlns:x = "http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local = "..."
xmlns:viewModels = "..."
x:Class = "...">
<FlyoutItem x:Name = "A1" FlyoutDisplayOptions = "AsMultipleItems">
<ShellContent x:Name = "a1">
<local:Homepage/>
</ShellContent>
</FlyoutItem>
<FlyoutItem FlyoutDisplayOptions = "AsMultipleItems">
<ShellContent Route = "Settings" ContentTemplate = "..." />
</FlyoutItem>
<FlyoutItem x:Name = "LoginFlyoutItem" FlyoutDisplayOptions = "AsMultipleItems">
<ShellContent x:Name = "Login" Route = "Login" ContentTemplate = "..." />
</FlyoutItem>
</Shell>
Я хочу, чтобы страница Login
выполняла навигацию на страницу a1
после того, как пользователь входит в систему с
await Shell.Current.GoToAsync(nameof(Homepage));
Проблема в том, что на странице a1
при открытии отображается кнопка «Назад» в верхнем левом углу, но я хочу, чтобы на ней отображался обычный значок гамбургера, чтобы открыть всплывающее окно. Я бы ожидал кнопку «Назад» при использовании метода PushAsync()
, но не при использовании метода GoToAsync()
. Я не хочу, чтобы страница a1
считалась «дочерней» страницы входа, я просто хочу, чтобы модель представления переходила на страницу a1
. Как я могу это сделать?
Я не хочу скрывать страницу входа, я просто хочу, чтобы a1 не рассматривался как дочерний элемент страницы входа.
Добавьте //
, чтобы переключиться на другой стек навигации, а не становиться дочерней страницей:
await Shell.Current.GoToAsync($"//{nameof(Homepage)}");
Я устанавливал глобальный маршрут с помощью Routing.RegisterRoute(nameof(Homepage), typeof(Homepage))
, и это вызвало конфликт. Я удалил глобальный маршрут, и теперь он работает.
Предполагая, что вы не хотите, чтобы пользователь снова переходил на страницу входа. Вы пытались установить для свойства IsVisible значение false на странице входа в систему после входа пользователя? Если структура вашего приложения позволяет это, это stackoverflow.com/q/65186262 может быть полезно.