【问题标题】:MudBlazor: Prevent closing MudDialog when clicking on OK buttonMudBlazor:单击“确定”按钮时防止关闭 MudDialog
【发布时间】:2021-11-24 23:29:26
【问题描述】:

当用户单击“确定”按钮时,有没有办法防止关闭MudDialog?我想在执行操作时保持对话框打开。

private async Task OpenMyDialogAsync()
{
    var dialog = DialogService.Show<MyDialog>("My Dialog");
    var result = await dialog.Result;


    if (!result.Cancelled)
    {
        // Prevent closing the dialog when user click the OK button
        // to perform an action
    }
}

另一个想法是在MyDialog 实例上注册一个事件。但是Show() 方法返回的结果不包含MyDialog 实例。有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: blazor blazor-server-side mudblazor


    【解决方案1】:

    那为什么要关闭它呢?您的“确定”按钮有一个OnClick

    而不是这个:

    <MudButton Color="Color.Primary" OnClick="Submit">Ok</MudButton>
    void Submit() => MudDialog.Close(DialogResult.Ok(true));
    

    这样做:

    <MudButton Color="Color.Primary" OnClick="RunMyStuff">Ok</MudButton>
        
    void RunMyStuff(){
        // Run your stuff here
        // Done
        Submit();
    }
    
    void Submit() => MudDialog.Close(DialogResult.Ok(true));
    

    【讨论】:

    • 您的解决方案中的问题是业务逻辑应该在对话框本身中。对于不是最佳方式的可重用组件。我想将逻辑保留在组件之外。我想要 WinForms 中的 FormClosingEventArgs 之类的东西,您可以在其中取消事件,从而防止对话框关闭。
    • 或者您在服务/接口中有业务逻辑,然后从对话框中触发它?
    • 嗯,这是一个解决方法的好主意。谢谢你的提示!
    猜你喜欢
    • 2012-11-24
    • 2012-05-07
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多