.NET Maui, как сделать очень специфическую вещь во всплывающем меню с использованием значковC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 .NET Maui, как сделать очень специфическую вещь во всплывающем меню с использованием значков

Сообщение Anonymous »

Извините за неудачное название... Я не смог придумать, как объяснить, что я пытаюсь сделать, в одном предложении. Также обратите внимание, что платформа полностью Android (не думаю, что это имеет значение, но могу ошибаться).
Это гораздо проще объяснить визуально. Следующие три изображения представляют собой две страницы:
  • Код: Выделить всё

    Home страница. Обратите внимание на гамбургер всплывающего меню.
    [*]Home
    после открытия всплывающего меню.
  • .
Описание текущего всплывающего меню

У меня есть всплывающее меню . В настоящее время в меню есть две страницы: «Главная» и «О программе». Вот как это выглядит на домашней странице:

Изображение

Затем я открываю всплывающее меню:

[img]https://i .stack.imgur.com/9khaJ.png[/img]

Нажмите на страницу «О программе», и мы попадем на страницу «О программе», которая выглядит следующим образом:

Изображение

Что я хотел бы изменить

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

Изображение
< /p>
Текущий код

Я покажу следующий код:
  • Код: Выделить всё

    AppShell.xaml
    , где я вставил код для главной страницы и страницы «О программе».
  • Код: Выделить всё

    AboutPage.xaml
    , который сейчас неинтересен, но, возможно, мне нужно добавить код.
  • Код: Выделить всё

    AboutPageViewModel.cs
    , куда я добавляю метод, соответствующий действию нажатия стрелки «назад» во всплывающем меню (я не уверен, что это правильное место для добавления этого кода).
Обратите внимание, что у меня относительно мало опыта работы с Мауи, поэтому существует большая вероятность того, что я неправильно подхожу ко всему - например, ко всем свойствам Shell должен быть установлен в соответствующем файле xaml страницы, а не в AppShell.xaml?
Ответы на подобные вопросы я только что придумал. В любом случае, вот код в состоянии, прежде чем я начну пробовать разные вещи для достижения своих целей.
AppShell.xaml xml для домашней страницы : AppShell.xaml, код для страницы «О программе»: AboutPage.xaml, пока ничего особенного: AboutPageViewModel.cs совершенно пуст:

Код: Выделить всё

namespace SandboxProject.ViewModel;
public partial class AboutPageViewModel : ObservableObject{}
Что я пробовал?

Совсем немного. Я приведу пример, который имеет наибольший смысл...
Я почти уверен, что мне нужно использовать BackButtonBehavior (перейдите в конец этой страницы, чтобы прочитать знаю об этом), но я использую его неправильно.
Вот изменения, которые я внес в код страницы «О программе» в ApShell.xaml... Я установил значок для FlyoutIcon в виде значка «о программе» (вы знаете, символ «i»), а значок для значка самой страницы я установил в виде стрелки влево. Я удалил заголовок. Я добавил эти строки кода в AboutPage.xaml. Это должно связать значок с командой Назад: А вот команда AboutPageViewModel.cs, Назад, которая должна запускаться, когда пользователь нажимает на значок со стрелкой влево:

Код: Выделить всё

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
и Shell.BackButtonBehavior — единственное отличие от оригинала. Это странно, что мне нужен Command="{Binding BackCommand}" в обоих элементах... Вот как это выглядит:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/783 ... ving-icons
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»