如何在Blazor中使用RenderTreeBuilder绑定组件引用?
使用RenderTreeBuilder实现Blazor组件的@ref绑定
你之前的问题出在误用了AddElementReferenceCapture方法——这个方法是用来捕获DOM元素引用的,而要获取Blazor组件(比如MudForm)的实例,必须使用AddComponentReferenceCapture方法。
正确的实现代码
private RenderFragment formControl => (builder) => { builder.OpenComponent<MudForm>(0); // 捕获组件实例并赋值给_Form变量 builder.AddComponentReferenceCapture(1, value => _Form = value as MudForm); builder.AddAttribute(2, nameof(MudForm.ChildContent), ChildContent); builder.CloseComponent(); }; [Parameter] public RenderFragment ChildContent { get; set; } private MudForm _Form;
关键说明
AddComponentReferenceCapture的回调会在组件实例创建完成后触发,直接将实例赋值给你的私有字段即可- 每个RenderTreeBuilder方法的序列ID(第一个参数)必须唯一且递增,不能重复
- 用
as做类型转换可以保证类型安全,避免强制转换的异常风险
内容的提问来源于stack exchange,提问作者Marcel Müller
相关产品推荐
相关产品推荐

