Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }