Ejemplo n.º 1
0
        private void UpdateBackgroundIfNotRemoved()
        {
            if (BackgroundEffect.GetBackground(Element) == null)
            {
                if (_backgroundManager != null)
                {
                    _backgroundManager.Dispose();
                    _backgroundManager = null;
                }

                View.Background = null;
            }
            else
            {
                var shouldCreateTracker = _backgroundManager == null;
                if (shouldCreateTracker)
                {
                    SetTracker();
                }

                var oldBackground = _background;

                _background = BackgroundEffect.GetBackground(Element);
                _background?.SetBinding(BindableObject.BindingContextProperty,
                                        new Binding("BindingContext", source: Element));

                if (!shouldCreateTracker)
                {
                    UpdateBackground(oldBackground, _background);
                }
            }
        }
Ejemplo n.º 2
0
 private void SetTracker()
 {
     if (Control is IVisualElementRenderer controlRenderer)
     {
         _backgroundManager = new MaterialBackgroundManager(controlRenderer);
     }
     else if (Container is IVisualElementRenderer containerRenderer)
     {
         _backgroundManager = new MaterialBackgroundManager(containerRenderer);
     }
 }
Ejemplo n.º 3
0
        protected override void OnDetached()
        {
            RemoveViewObservers();

            if (_backgroundManager != null)
            {
                _backgroundManager.Dispose();
                _backgroundManager = null;
            }

            base.OnDetached();
        }
        private void UpdateBackgroundIfNotRemoved()
        {
            if (BackgroundEffect.GetBackground(Element) == null)
            {
                if (_backgroundManager != null)
                {
                    _backgroundManager.Dispose();
                    _backgroundManager = null;
                }

                if (View is UITextField textField)
                {
                    textField.BorderStyle = UITextBorderStyle.None;
                }

                View.Layer?.Sublayers
                ?.FirstOrDefault(x => x is GradientStrokeLayer)
                ?.RemoveFromSuperLayer();
            }
            else
            {
                var shouldCreateTracker = _backgroundManager == null;
                if (shouldCreateTracker)
                {
                    SetTracker();
                }

                var oldBackground = _background;

                _background = BackgroundEffect.GetBackground(Element);
                _background?.SetBinding(BindableObject.BindingContextProperty,
                                        new Binding("BindingContext", source: Element));

                if (!shouldCreateTracker)
                {
                    _backgroundManager?.SetBackgroundElement(oldBackground, _background);
                }
            }
        }