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

.NET MAUI中如何关闭模态页面?

MAUI 模态页面关闭的标准实现方法

在.NET MAUI中,关闭模态页面的标准方式是调用Navigation.PopModalAsync()方法,以下是针对你的代码的完整修改方案:

1. 绑定按钮点击事件

先修改ModalPage.xaml中的按钮代码,给两个按钮添加Clicked事件绑定,关联到后台的处理方法:

<Grid WidthRequest="600" >
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Button Text="Cancel" Clicked="CancelButton_OnClicked"/>
    <Button Grid.Column="1" Text="Submit" Clicked="SubmitButton_OnClicked"/>
</Grid>

2. 实现关闭逻辑

修改ModalPage的后台代码,在点击事件中调用异步的PopModalAsync()方法完成页面关闭。如果是提交按钮,可先处理表单数据再关闭:

public partial class ModalPage : ContentPage
{
    public ModalPage()
    {
        InitializeComponent();
    }

    private async void CancelButton_OnClicked(object sender, EventArgs e)
    {
        // 直接关闭,不保存数据
        await Navigation.PopModalAsync();
    }

    private async void SubmitButton_OnClicked(object sender, EventArgs e)
    {
        // 先处理表单数据(示例:获取输入框值)
        // var input1 = entry1.Text;
        // ... 数据验证、保存逻辑

        // 处理完成后关闭模态页面
        await Navigation.PopModalAsync();
    }
}

关键说明

  • PopModalAsync()是MAUI导航系统专门用于关闭模态页面的方法,会自动返回至之前的页面
  • 由于是异步方法,必须搭配await关键字调用,因此按钮点击事件方法需声明为async void
  • 如果需要向原页面传递数据,可通过委托、事件或ViewModel的方式实现(比如定义回调方法在关闭前触发)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:02:45