protected override void Dispose(bool disposing)
        {
            if (disposing && !_disposed)
            {
                Element.PropertyChanged -= OnElementPropertyChanged;
                Platform.SetRenderer(Element, null);
                if (_appeared)
                {
                    Page.SendDisappearing();
                }

                _appeared = false;

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

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

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

                Element   = null;
                _disposed = true;
            }

            base.Dispose(disposing);
        }
        protected override void Dispose(bool disposing)
        {
            if (disposing && !_disposed)
            {
                if (Carousel != null)
                {
                    Carousel.PropertyChanged -= OnPropertyChanged;
                    Carousel.PagesChanged    -= OnPagesChanged;
                }

                Platform.SetRenderer(Element, null);

                if (_appeared)
                {
                    _appeared = false;
                    Page?.SendDisappearing();
                }

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

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

                Element   = null;
                _disposed = true;
            }

            base.Dispose(disposing);
        }
Ejemplo n.º 3
0
        public void SetElement(VisualElement element)
        {
            _requestedScroll = null;
            var oldElement = Element;

            Element = element;

            if (oldElement != null)
            {
                oldElement.PropertyChanged -= OnElementPropertyChanged;
                ((ScrollView)oldElement).ScrollToRequested -= OnScrollToRequested;
            }

            if (element != null)
            {
                element.PropertyChanged += OnElementPropertyChanged;
                ((ScrollView)element).ScrollToRequested += OnScrollToRequested;
                if (_tracker == null)
                {
                    PackContent();

                    _events = new EventTracker(this);
                    _events.LoadEvents(this);

                    _tracker = new VisualElementTracker(this);
                    _tracker.NativeControlUpdated += OnNativeControlUpdated;
                }

                UpdateContentSize();
                UpdateBackgroundColor();
                UpdateOrientation();
                RaiseElementChanged(new VisualElementChangedEventArgs(oldElement, element));
            }

            ResetNativeNonScroll();
        }