public IDialogReference Show(Type contentComponent, string title, DialogParameters parameters, DialogOptions options) { if (!typeof(ComponentBase).IsAssignableFrom(contentComponent)) { throw new ArgumentException($"{contentComponent.FullName} must be a Blazor Component"); } var DialogInstanceId = Guid.NewGuid(); DialogReference DialogReference = null; var DialogContent = new RenderFragment(builder => { var i = 0; builder.OpenComponent(i++, contentComponent); foreach (var parameter in parameters._parameters) { builder.AddAttribute(i++, parameter.Key, parameter.Value); } builder.CloseComponent(); }); var DialogInstance = new RenderFragment(builder => { builder.OpenComponent <MudDialogInstance>(0); builder.AddAttribute(1, "Options", options); builder.AddAttribute(2, "Title", title); builder.AddAttribute(3, "Content", DialogContent); builder.AddAttribute(4, "Id", DialogInstanceId); builder.CloseComponent(); }); DialogReference = new DialogReference(DialogInstanceId, DialogInstance, this); OnDialogInstanceAdded?.Invoke(DialogReference); return(DialogReference); }
public IDialogReference Show(Type contentComponent, string title, DialogParameters parameters, DialogOptions options) { if (!typeof(ComponentBase).IsAssignableFrom(contentComponent)) { throw new ArgumentException($"{contentComponent.FullName} must be a Blazor Component"); } var dialogReference = CreateReference(); var dialogContent = new RenderFragment(builder => { var i = 0; builder.OpenComponent(i++, contentComponent); if (!dialogReference.AreParametersRendered) { foreach (var parameter in parameters) { builder.AddAttribute(i++, parameter.Key, parameter.Value); } dialogReference.AreParametersRendered = true; } else { i += parameters.Count; } builder.AddComponentReferenceCapture(i++, inst => { dialogReference.InjectDialog(inst); }); builder.CloseComponent(); }); var dialogInstance = new RenderFragment(builder => { builder.OpenComponent <MudDialogInstance>(0); builder.SetKey(dialogReference.Id); builder.AddAttribute(1, "Options", options); builder.AddAttribute(2, "Title", title); builder.AddAttribute(3, "Content", dialogContent); builder.AddAttribute(4, "Id", dialogReference.Id); builder.CloseComponent(); }); dialogReference.InjectRenderFragment(dialogInstance); OnDialogInstanceAdded?.Invoke(dialogReference); return(dialogReference); }