示例#1
0
        private OverlayReference Open <TContentData>(Type componentType, DialogConfig dialogConfig, ContentData contentData)
        {
            if (!typeof(ComponentBase).IsAssignableFrom(componentType))
            {
                throw new ArgumentException($"{componentType.FullName} must be a Blazor Component");
            }

            var globalPositionStrategy = new GlobalPositionStrategyBuilder();

            globalPositionStrategy.CenterVertically("");
            globalPositionStrategy.CenterHorizontally("");

            var overlayConfig = new OverlayConfig()
            {
                HasBackdrop            = dialogConfig.HasBackdrop,
                HasTransparentBackdrop = dialogConfig.HasTransparentBackdrop,
                Width  = dialogConfig.Width,
                Height = dialogConfig.Height,
                GlobalPositionStrategy = globalPositionStrategy
            };

            var userContent = new RenderFragment(x =>
            {
                x.OpenComponent(0, componentType);
                x.AddAttribute(1, "ContentData", contentData);
                x.CloseComponent();
            });

            var dialog = new RenderFragment(x =>
            {
                x.OpenComponent(0, typeof(DnetDialog));
                x.AddAttribute(1, "Title", dialogConfig.Title);
                x.AddAttribute(2, "DialogClass", dialogConfig.DialogClass);
                x.AddAttribute(3, "ContentChild", userContent);
                x.CloseComponent();
            });

            var overlayReference = _overlayService.Attach(dialog, overlayConfig);

            return(overlayReference);
        }