Blazor使用级联值实现Dialog关闭功能

思路

1.在模板页面增加CascadingValue传入Dialog的实例
2.在BaseComponent中加入[CascadingParameter]特性声明级联Dialog实例参数
3.在模块页面按钮方法中调用Dialog实例参数的Close方法

模板页面

<div class="app">
    <CascadingValue Value="dialog">
        <DynamicComponent Type="componentType" />
    </CascadingValue>
</div>
<Dialog @ref="dialog" />
@code {
    private Dialog dialog;
    private Type componentType;
}

BaseComponent

public class BaseComponent : ComponentBase, IDisposable {
    [CascadingParameter]
    protected Dialog Dialog { get; set; }
}

模块页面

@inherits BaseComponent
<div>
    <button @onclick="OnOpen">打开</button>
</div>
@code {
    private void OnOpen() {
        UI.Show(new DialogOption{
            Title = "测试",
            Content = builder => {
                builder.Element("button", b => {
                    b.Text("关闭").OnClick(EventCallback.Factory.Create(this, e => Dialog.Close()));
                })
            }
        });
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值