Esempio n. 1
0
 public GdiRenderKit(IViewPerspective viewPerspective,
                     IWindowProvider <IVisualHost> windowProvider,
                     IResolver resolver,
                     IThemeProvider styleContext,
                     IVisualBootstrapper visualBootstrapper,
                     IViewInflater viewInflater,
                     IImageProvider imageProvider)
     : base(resolver, visualBootstrapper, viewInflater,
            new Dictionary <IVisualElement, ValueCube>(), imageProvider)
 {
     _windowProvider = windowProvider;
     Init(windowProvider, styleContext, viewPerspective, _renderPositions,
          ref _imageProvider !, ref _measureContext !, ref _renderContext !);
 }
Esempio n. 2
0
 protected BaseRenderKit(IResolver resolver,
                         IVisualBootstrapper visualBootstrapper,
                         IViewInflater viewInflater,
                         Dictionary <IVisualElement, ValueCube> renderPositions,
                         IImageProvider imageProvider)
     : this(ref resolver !, imageProvider, renderPositions)
Esempio n. 3
0
        public async Task ApplyStylesToVisualAsync(IVisualElement visual,
                                                   IAttributeDictionary attributeDictionary,
                                                   IVisualLineage visualLineage,
                                                   IViewInflater viewInflater)
        {
            await _appliedStyleBuilder.ApplyVisualStylesAsync(visual, attributeDictionary,
                                                              visualLineage, viewInflater);

            return;

            var omgStyle = await _styleProvider.GetStyleForVisualAsync(visual, attributeDictionary);

            if (omgStyle != null)
            {
            }

            if (attributeDictionary.TryGetAttributeValue("class", out var className))
            {
                await ApplyStylesToVisualAsync(visual, className, visualLineage);

                return;
            }

            if (attributeDictionary.TryGetAttributeValue("Style", out var styleName))
            {
                var style = await _styleProvider.GetStyleByNameAsync(styleName);

                if (style == null)
                {
                    return;
                }

                //var applyingRules = new StyledVisualWorker(style, _propertyProvider, _visualBootstrapper);

                //applyingRules.TrySetVisualStyle(visual, style);

                //if (applyingRules.TryGetVisualTemplate(out var visualTemplate) &&
                //    visualTemplate is DeferredVisualTemplate deferred)
                if (TryGetVisualTemplate(style, out var visualTemplate) &&
                    visualTemplate is DeferredVisualTemplate deferred)
                {
                    //var contentVisual = await viewInflater.GetVisualAsync(deferred.MarkupNode,
                    //    visual.GetType(), visualLineage, applyingRules.ApplyStylesToVisualAsync);

                    var contentVisual = await viewInflater.GetVisualAsync(deferred.MarkupNode,
                                                                          visual.GetType(), visualLineage, _appliedStyleBuilder.ApplyVisualStylesAsync);

                    visual.Template = new VisualTemplate
                    {
                        Content = contentVisual
                    };

                    //control template's data context should be the control being templated....?
                    if (contentVisual is IBindableElement bindable)
                    {
                        bindable.DataContext = visual;
                    }

                    visualLineage.AssertPopVisual(contentVisual);

                    _appliedStyleBuilder.BuildAppliedStyle(style, visual, visualLineage);
                }
                else
                {
                    await _appliedStyleBuilder.ApplyVisualStylesAsync(visual, attributeDictionary, visualLineage);

                    //applyingRules.ApplyStyleValuesToVisual(visual, attributeDictionary, visualLineage);
                }
            }
        }