Есть два варианта: 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);
}
Чтобы лучше понимать вышеперечисленные шаги, я загружаю пример кода здесь , к которому вы могли бы обратиться.