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

.NET Maui中能否在函数中途导航页面并暂停至页面关闭?

.NET MAUI 实现模态对话框暂停执行+返回值逻辑

完全可行,.NET MAUI里可以通过异步模态导航+页面传值实现和WinForms ShowDialog一致的逻辑,具体做法如下:

1. 改造目标页面(对应原frmProd)

给MAUI ContentPage添加返回结果属性,并在按钮事件中处理关闭逻辑:

Public Class frmProdPage
    Inherits ContentPage

    ' 存储对话框返回结果,True=确认,False=取消,Nothing=未操作
    Public Property DialogResult As Boolean?

    Public Sub New()
        InitializeComponent()
        ' 绑定确认/取消按钮点击事件
        AddHandler btnOK.Clicked, AddressOf btnOK_Clicked
        AddHandler btnCancel.Clicked, AddressOf btnCancel_Clicked
    End Sub

    Private Async Sub btnOK_Clicked(sender As Object, e As EventArgs)
        Me.DialogResult = True
        ' 关闭模态页面
        Await Navigation.PopModalAsync()
    End Sub

    Private Async Sub btnCancel_Clicked(sender As Object, e As EventArgs)
        Me.DialogResult = False
        Await Navigation.PopModalAsync()
    End Sub
End Class

2. 调用方异步改造

将原同步方法改为Async方法,通过Await等待模态页面关闭,之后获取返回值:

' 注意:方法必须标记为Async,返回类型如果是Sub就保持,是Function则改为Task/Task(Of T)
Private Async Sub OriginalTriggerMethod()
    ' 执行到此处暂停,打开模态页面
    Dim prodPage = New frmProdPage()
    Await Navigation.PushModalAsync(prodPage)

    ' 模态页面关闭后,代码才会继续执行到这里
    If prodPage.DialogResult = True Then
        ' 原代码中ShowDialog=OK后的业务逻辑
        ' 示例:获取页面中的输入数据
        Dim selectedProd = prodPage.txtProductName.Text
        ' 后续处理...
    Else
        ' 取消后的逻辑
    End If
End Sub

3. 优化细节

  • 如果需要给模态页面传递初始化数据,可以通过构造函数或属性实现:
    ' 在frmProdPage中添加带参数的构造函数
    Public Sub New(initialProductId As String)
        InitializeComponent()
        txtProductId.Text = initialProductId
        ' 其他初始化逻辑...
    End Sub
    
    ' 调用时传入数据
    Dim prodPage = New frmProdPage("PROD001")
    
  • 若要隐藏模态页面的导航栏,让风格更接近WinForms对话框:
    Dim modalContainer = New NavigationPage(New frmProdPage())
    modalContainer.BarVisibility = NavigationBarVisibility.Never
    Await Navigation.PushModalAsync(modalContainer)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:21:16