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

.NET MAUI带导航栈的弹出菜单实现方案咨询

.NET MAUI实现带导航栈的弹出控件方案

可以用Mopups库实现带导航栈的弹出控件,下面是具体实现步骤:

1. 安装并初始化Mopups

先通过NuGet安装Mopups包,再在MauiProgram.cs中添加初始化代码:

builder.UseMopups();

2. 创建带导航栈的弹出页

不要直接用ContentPage作为弹出内容,而是在弹出页中嵌入NavigationPage,以此获得导航栈功能:

弹出页XAML(MenuPopup.xaml)

<?xml version="1.0" encoding="utf-8" ?>
<pages:PopupPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:pages="clr-namespace:Mopups.Pages;assembly=Mopups"
             xmlns:local="clr-namespace:YourAppNamespace"
             x:Class="YourAppNamespace.MenuPopup"
             WidthRequest="300" HeightRequest="400">
    <NavigationPage>
        <x:Arguments>
            <local:MenuPage /> <!-- 嵌入你的菜单主页面 -->
        </x:Arguments>
    </NavigationPage>
</pages:PopupPage>

弹出页后台代码(MenuPopup.xaml.cs)

using Mopups.Pages;
using Mopups.Services;

namespace YourAppNamespace;

public partial class MenuPopup : PopupPage
{
    public MenuPopup()
    {
        InitializeComponent();
    }
}

3. 修改主页弹出逻辑

在homepage.xaml.cs中,改为弹出Mopups的Popup页,替代原来的全屏页面跳转:

private async void OpenMenuPage(object sender, EventArgs e)
{
    await MopupService.Instance.PushAsync(new MenuPopup());
}

4. 菜单页的导航逻辑调整

在MenuPage.xaml.cs中,直接用当前Navigation对象进行页面跳转即可,因为它已嵌入在NavigationPage中:

private async void FirstPage_OnClicked(object sender, EventArgs e)
{
    await Navigation.PushAsync(new FirstPage());
}

private async void SecondPage_OnClicked(object sender, EventArgs e)
{
    await Navigation.PushAsync(new SecondPage());
}

5. 关闭弹出控件

在子页面(如FirstPage)中,若要关闭整个弹出层,可通过MopupService操作:

private async void ClosePopup_Clicked(object sender, EventArgs e)
{
    await MopupService.Instance.PopAllAsync();
}

其他可选方案

如果不想用Mopups,也可以用.NET MAUI Community Toolkit的Popup,需要手动在Popup内部嵌入NavigationPage,通过Navigation管理页面跳转,关闭时调用Popup.CloseAsync()即可。

内容的提问来源于stack exchange,提问作者Kadupul23

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:12:48