Привет, ребята! В этом блоге мы изучим основы Shell Navigation в .Net Maui.
Навигация в оболочке включает навигацию на основе URI, которая использует маршруты для перехода с одной страницы на другую.
Если вы хотите научиться навигации по NavigationPage, нажмите нажмите здесь для моего блога о навигации по NavigationPage.
Оглавление
- Предпосылка
- Простая навигация
- Передача данных с навигацией
- Переход назад или удаление страницы
- Очистка стека навигации или изменение главной страницы
Предпосылка
Прежде чем мы убедимся, что вы добавили все свои страницы в AppShell.xaml
Добавьте свои страницы как ShellContent внутри тега Shell, как показано ниже.
Здесь важно отметить маршрут. Это маршрут, который мы будем использовать в будущем для навигации по оболочке.
Откройте App.cs и установите MainPage как AppShell.
Теперь откройте MauiProgram.cs и зарегистрируйте маршруты для навигации по оболочке, как показано ниже.
Простая навигация
Здесь мы будем переходить с одной страницы на другую. Базовая простая навигация.
Для этого мы будем использовать метод GoToAsync объекта Current класса Shell.
Страница 1 → Страница 2
ждите Shell.Current.GoToAsync("page2");
Метод GoToAsync выбирает маршрут для навигации, который мы зарегистрировали в MauiProgram.cs.
Передача данных с навигацией
Чтобы передать данные со страницы 1 на страницу 2, мы можем просто использовать параметры запроса при навигации, как показано ниже.
string data = «Данные с главной страницы».
ждите Shell.Current.GoToAsync($”page2?data={data}”);
Обработка данных, переданных на страницу 2
На странице 2 данные передаются с помощью QueryProperty.
QueryProperty("Имя_вашего_свойства_привязки", "Имя_параметра_запроса")
Чтобы отправить несколько данных в навигации оболочки, используйте приведенный ниже синтаксис.
string data = «Данные с главной страницы».
bool hasAdditionalData = true;
ждите Shell.Current.GoToAsync($”page2?data={data}&hasMoreData={hasAdditionalData}”);
Я бы рекомендовал отправлять словарь в виде данных, так как сложные объекты легко передавать.
Назад
Чтобы вернуться назад в навигации оболочки, просто используйте “..” в GoToAsync.
Страница 2 ← Страница 1
ждите Shell.Current.GoToAsync(“..”);
Чтобы передавать данные при переходе назад, мы можем использовать тот же параметр запроса в URI.
ждите Shell.Current.GoToAsync($“..?data={data}”);
Мы также можем удалить текущую страницу из стека навигации при переходе с одной страницы на другую.
ждите Shell.Current.GoToAsync(“../page3”);
До «../page3» наш стек навигации будет выглядеть так, как показано ниже.
Главная страница → Страница 1→ Страница 2
После «../page3» наш стек навигации будет выглядеть так, как показано ниже.
Главная страница → Страница 1→ Страница 3
Очистка стека навигации или изменение главной страницы
Это похоже на PopToRootAsync или настройку новой главной страницы.
ждите Shell.Current.GoToAsync("//page1");
OR
ждите Shell.Current.GoToAsync("///page1");
Это очистит стек навигации и установит Page1 в качестве главной страницы в навигации.
Удачного кодирования :D