You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI迁移FlyoutPage汉堡图标不显示问题求助

.NET MAUI迁移中FlyoutPage汉堡图标不显示问题求助

我正在将一个Xamarin项目迁移至.NET MAUI,当前遇到FlyoutPage的汉堡图标不显示的问题:虽然可以从左侧拖拽呼出菜单且功能正常,但初始化导航服务时图标会消失;若注释导航服务初始化代码,图标会显示,但点击菜单项会抛出异常。项目基于这套导航服务构建(涉及路由、ViewModel初始化等),担心绕过它需要大量重构,请问是否有开发者遇到相同问题并能提供可行的解决方案?


相关代码片段

App类代码

public partial class App : Application
{
    public App()
    {
        InitializeComponent();

        Resources["DefaultStringResources"] = new Resx.AppResources();

        DependencyService.Register<SoapServices>();
        DependencyService.Register<SQLiteHelper>();
        DependencyService.Register<BackgroundServiceImplementation>();
        DependencyService.Register<PdfService>();

        InitApp();

        InitLoggerService();

        VersionTracking.Track();
        MainPage = new RootMasterDetailView();
        //DependencyService.Get<ISQLiteHelper>().ImportDatabase("KoreDatabase.db3");
    }
    //protected override Window CreateWindow(IActivationState activationState)
    //{
    //    MainPage = new RootMasterDetailView();
    //    return base.CreateWindow(activationState);
    //}
    private void InitLoggerService()
    {
        var loggerService = ViewModelLocator.Resolve<ILoggerService>();
        loggerService.InitializeAnalytics();
    }

    private void InitApp()
    {
        VersionTracking.Track();
        Settings.UrlBase = Constants.BaseUrl;
        ViewModelLocator.RegisterDependencies();
    }

    protected override async void OnStart()
    {
        base.OnStart();
        //await InitNavigation(); // ********* 注释掉这行,汉堡图标就会显示
    }

    private Task InitNavigation()
    {
        var navigationService = ViewModelLocator.Resolve<INavigationService>();
        return navigationService.InitializeAsync();
    }

}

导航服务InitializeAsync方法

public Task InitializeAsync()
{
    if (!Settings.IsLoggedIn)
    {
        return NavigateToAsync<LoginViewModel>();
    }
    else
    {
        if (Settings.FinishedFirstSync)
        {
        return NavigateToAsync<RootMasterDetailViewModel>();
        }
        else
        {
            return NavigateToAsync<StatusViewModel>(true);
        }

    }
}

导航服务NavigateToAsync重载方法

public Task NavigateToAsync<TViewModel>() where TViewModel : ViewModelBase
{
    return InternalNavigateToAsync(typeof(TViewModel), null);
}

public Task NavigateToAsync<TViewModel>(object parameter) where TViewModel : ViewModelBase
{
    return InternalNavigateToAsync(typeof(TViewModel), parameter);
}

导航服务InternalNavigateToAsync方法

private async Task InternalNavigateToAsync(Type viewModelType, object parameter)
{
    //_loggerService.RegisterNavigationEvent(viewModelType, parameter);

    Page page = CreatePage(viewModelType, parameter);

    // if (page is LoginView)
    // {
    //     Application.Current.MainPage = new CustomNavigationView(page);
    // }
    // else
    // {
    var navigationPage = Application.Current.MainPage as NavigationPage;
    if (navigationPage != null)
    {
        await navigationPage.PushAsync(page);
    }
    else
    {
        Application.Current.MainPage = new NavigationPage(page);
    }
    // }

    await InitializePage(page, parameter);
}

导航服务InitializePage方法

private async Task InitializePage(Page page, object parameter = null)
{
    if ((page.BindingContext as ViewModelBase).Initialized)
        return;

    await (page.BindingContext as ViewModelBase).InitializeAsync(parameter);

    if (page is FlyoutPage)
    {
        await InitializePage(((FlyoutPage)page).Flyout, null);
        await InitializePage(((FlyoutPage)page).Detail, null);
    }
    else if (page is TabbedPage)
    {
        foreach (var child in (page as TabbedPage).Children)
        {
            await InitializePage(child, parameter);
        }
    }
    else if (page is NavigationPage)
    {
        await InitializePage((page as NavigationPage).CurrentPage, null);
    }
}

内容的提问来源于Stack Exchange,提问作者Agus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 03:34:54