Всплывающее меню бокового меню Xamarin Обновить - PullRequest
0 голосов
/ 30 апреля 2020

Я использую Xamarin в проекте UWP с главной страницей MasterDetail, которая включает в себя меню списка, которое появляется слева. Меню представляет собой MenuPage согласно <views:MenuPage>. Есть два варианта: 1 / Войти 2 / О программе. После нажатия кнопки «Вход» и входа в приложение я хочу изменить меню, чтобы отобразить пункты меню пользователя, но я не могу перезагрузить параметры MenuPage в любом случае. Кажется, у него нет реферала sh. Как мне это сделать, или мне нужно перезагрузить всю главную страницу?

1 Ответ

1 голос
/ 30 апреля 2020

Есть два варианта: 1 / Войти 2 / О программе. После нажатия кнопки «Вход» и входа в приложение я хочу изменить меню, чтобы отобразить пункты меню пользователя, но я не могу перезагрузить параметры MenuPage в любом случае.

По вашему требованию вы можете изменить menuItems на public static ObservableCollection<HomeMenuItem> menuItems, который может получить доступ на другой странице и ответить на изменение списка просмотра.

public partial class MenuPage : ContentPage
{
    MainPage RootPage { get => Application.Current.MainPage as MainPage; }
    public static ObservableCollection<HomeMenuItem> menuItems;
    public MenuPage()
    {
        InitializeComponent();

        menuItems = new ObservableCollection<HomeMenuItem>
        {
            new HomeMenuItem {Id = MenuItemType.Browse, Title="Login" },
            new HomeMenuItem {Id = MenuItemType.About, Title="About" }
        };

        ListViewMenu.ItemsSource = menuItems;

        ListViewMenu.SelectedItem = menuItems[0];

        ListViewMenu.ItemSelected += async (sender, e) =>
        {
            if (e.SelectedItem == null)
                return;

            var id = (int)((HomeMenuItem)e.SelectedItem).Id;
            await RootPage.NavigateFromMenu(id);
        };
    }
}

Затем обработать данные меню после нажатия кнопка входа в систему.

private async void ToolbarItem_Clicked(object sender, EventArgs e)
{

    MenuPage.menuItems.Insert(0,new HomeMenuItem { Id = MenuItemType.User, Title = "User" });
    MenuPage.menuItems.RemoveAt(1);
    await RootPage.NavigateFromMenu((int)MenuPage.menuItems[0].Id);    
}

Чтобы лучше понимать вышеперечисленные шаги, я загружаю пример кода здесь , к которому вы могли бы обратиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...