Это гораздо проще объяснить визуально. Следующие три изображения представляют собой две страницы:
- после открытия всплывающего меню.
Код: Выделить всё
Home страница. Обратите внимание на гамбургер всплывающего меню. [*]Home
- .
Код: Выделить всё
About
У меня есть всплывающее меню . В настоящее время в меню есть две страницы: «Главная» и «О программе». Вот как это выглядит на домашней странице:

Затем я открываю всплывающее меню:
[img]https://i .stack.imgur.com/9khaJ.png[/img]
Нажмите на страницу «О программе», и мы попадем на страницу «О программе», которая выглядит следующим образом:

Что я хотел бы изменить
Все, что я хочу изменить, находится на странице «О программе». Я хочу:
- удалить значок гамбургера и заменить его на что-то другое (кнопка «Назад»)
< li>удалите заголовок, чтобы на панели навигации был только новый значок (это тривиально) - измените поведение того, что происходит, когда значок-гамбургера меняется на- Нажата кнопка-кнопка-значок... вместо того, чтобы открывать меню, вернитесь на главную страницу.

< /p>
Текущий код
Я покажу следующий код:
- , где я вставил код для главной страницы и страницы «О программе».
Код: Выделить всё
AppShell.xaml
- , который сейчас неинтересен, но, возможно, мне нужно добавить код.
Код: Выделить всё
AboutPage.xaml
- , куда я добавляю метод, соответствующий действию нажатия стрелки «назад» во всплывающем меню (я не уверен, что это правильное место для добавления этого кода).
Код: Выделить всё
AboutPageViewModel.cs
Ответы на подобные вопросы я только что придумал. В любом случае, вот код в состоянии, прежде чем я начну пробовать разные вещи для достижения своих целей.
AppShell.xaml xml для домашней страницы :
Код: Выделить всё
Код: Выделить всё
Код: Выделить всё
Код: Выделить всё
namespace SandboxProject.ViewModel;
public partial class AboutPageViewModel : ObservableObject{}
Совсем немного. Я приведу пример, который имеет наибольший смысл...
Я почти уверен, что мне нужно использовать BackButtonBehavior (перейдите в конец этой страницы, чтобы прочитать знаю об этом), но я использую его неправильно.
Вот изменения, которые я внес в код страницы «О программе» в ApShell.xaml... Я установил значок для FlyoutIcon в виде значка «о программе» (вы знаете, символ «i»), а значок для значка самой страницы я установил в виде стрелки влево. Я удалил заголовок.
Код: Выделить всё
Код: Выделить всё
Код: Выделить всё
namespace SandboxProject.ViewModel;
public partial class AboutPageViewModel : ObservableObject
{
[RelayCommand]
private async Task Back() =>
await Shell.Current.GoToAsync($"//{nameof(HomePage)}");
}
[img]https://i.stack. imgur.com/pJvgH.png[/img]
Если бы кто-нибудь мог меня научить, я был бы признателен.
РЕДАКТИРОВАТЬ: РЕШЕНИЕ
Следующее решение является (в основном) предложенным ниже месье Чжэном. Во-первых, повторение проблемы.
Домашняя страница. Он имеет всплывающее меню, содержащее два пункта меню: «Главная» и «О программе».
[img]https://i.stack.imgur. com/RzwEw.png[/img]
Обычно, когда пользователь нажимает кнопку страницы «О программе» во всплывающем меню, на результирующей странице вверху появляется значок гамбургера, который при нажатии , открывает другое всплывающее меню вместе с заголовком страницы «О программе». Это выглядит примерно так:

Однако мне нужно следующее:
- значок «О программе» не такой же, как в всплывающее меню. Вместо значка «i» это стрелка назад.
- нажатие на этот значок выполняет действие, отличное от обычного. Как значок всплывающего меню, он должен повторно открыть всплывающее меню, но я хочу, чтобы он перешел к команде (которая возвращает его на главную страницу).
- Заголовок удален. Вместо надписи «О программе» на панели навигации отображается... ничего!
Код: Выделить всё
AppShell.xaml
Код: Выделить всё
Код: Выделить всё
About.xaml. Элементы (и соответствующие им вложенные элементы) Shell.TitleView
Код: Выделить всё

Подробнее здесь: https://stackoverflow.com/questions/783 ... ving-icons