Listview Xamarin侧菜单弹出刷新

Listview Xamarin侧菜单弹出刷新,listview,xamarin.forms,uwp,Listview,Xamarin.forms,Uwp,我在一个UWP项目中使用Xamarin,该项目有一个MasterDetail主页,其中包括一个从左侧弹出的列表菜单。该菜单是符合的菜单页。 有两个选项,1/登录2/关于。 单击登录并登录到应用程序后,我想更改菜单以显示用户的菜单选项,但我似乎无法以任何方式重新加载菜单页的选项。它似乎没有refesh。我该怎么做,还是需要重新加载整个主页 有两个选项,1/登录2/关于。单击登录并登录到应用程序后,我想更改菜单以显示用户的菜单选项,但我似乎无法以任何方式重新加载菜单页的选项 根据您的需求,您可以将m

我在一个UWP项目中使用Xamarin,该项目有一个MasterDetail主页,其中包括一个从左侧弹出的列表菜单。该菜单是符合
的菜单页。 有两个选项,1/登录2/关于。 单击登录并登录到应用程序后,我想更改菜单以显示用户的菜单选项,但我似乎无法以任何方式重新加载菜单页的选项。它似乎没有refesh。我该怎么做,还是需要重新加载整个主页

有两个选项,1/登录2/关于。单击登录并登录到应用程序后,我想更改菜单以显示用户的菜单选项,但我似乎无法以任何方式重新加载菜单页的选项

根据您的需求,您可以将
menuItems
更改为
publicstaticobservedcollection menuItems
,该菜单可以在其他页面中访问并响应listview更改

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);
        };
    }
}

为了更好地理解上述步骤,我上传了代码示例,您可以参考。

Application.Current.MainPage=newmainpage(),在登录成功后,似乎可以工作,但这是正确的方法吗?我认为这可能会导致内存泄漏。我的代码看起来有点不同,但关键是ObservableCollection。我已经读了更多关于这个集合的内容,现在我的菜单不用重新加载整个页面就可以工作了。现在,我不再尝试替换菜单选项,而是清除选项并用.Add(…)重新加载。我只想在Android emulator上尝试一下,并检查它是否仍然有效。是的,这在Android上运行良好。我第一次使用实体框架,它看起来非常快速和简单。但是忘记了我的本地主机在android测试应用程序上需要一个不同的地址(10.0.2.2)!还安装了适用于android的HAXM,使用我的桌面的虚拟化,使模拟器以很好的速度工作。哇,太棒了!如果我记得在XAMPP控制面板上启动我的数据库服务器,我可能会加快调试速度:)现在我必须了解使用REST api作为纯实体框架需要数据库,因此用户名和密码不应该共享。。。
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);    
}