Привет, ребята! В этом блоге мы изучим основы Shell Navigation в .Net Maui.

Навигация в оболочке включает навигацию на основе URI, которая использует маршруты для перехода с одной страницы на другую.

Если вы хотите научиться навигации по NavigationPage, нажмите нажмите здесь для моего блога о навигации по NavigationPage.

Оглавление

  1. Предпосылка
  2. Простая навигация
  3. Передача данных с навигацией
  4. Переход назад или удаление страницы
  5. Очистка стека навигации или изменение главной страницы

Предпосылка

Прежде чем мы убедимся, что вы добавили все свои страницы в 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