示例#1
0
        private void _carouselView_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (e.PropertyName == nameof(_carouselView.Position) && !_supressCarouselViewPositionChangedEvent)
            {
                var positionChangingArgs = new PositionChangingEventArgs()
                {
                    Canceled    = false,
                    NewPosition = _carouselView.Position,
                    OldPosition = SelectedTabIndex
                };

                OnPositionChanging(ref positionChangingArgs);

                if (positionChangingArgs != null && positionChangingArgs.Canceled)
                {
                    _supressCarouselViewPositionChangedEvent = true;
                    _carouselView.PositionSelected          -= _carouselView_PositionSelected;
                    _carouselView.PropertyChanged           -= _carouselView_PropertyChanged;
                    _carouselView.Position                   = SelectedTabIndex;
                    _carouselView.PositionSelected          += _carouselView_PositionSelected;
                    _carouselView.PropertyChanged           += _carouselView_PropertyChanged;
                    _supressCarouselViewPositionChangedEvent = false;
                }

                SetPosition(positionChangingArgs.NewPosition);
            }
        }
示例#2
0
        public void SetPosition(int position)
        {
            int oldPosition = _position;

            var positionChangingArgs = new PositionChangingEventArgs()
            {
                Canceled    = false,
                NewPosition = position,
                OldPosition = oldPosition
            };

            OnPositionChanging(ref positionChangingArgs);

            if (positionChangingArgs != null && positionChangingArgs.Canceled)
            {
                return;
            }

            if (position >= 0 && position < ItemSource.Count)
            {
                for (int i = 0; i < ItemSource.Count; i++)
                {
                    ItemSource[i].IsCurrent = i == position;
                }

                _carouselView.PositionSelected -= _carouselView_PositionSelected;
                _carouselView.Position          = position;
                _carouselView.PositionSelected += _carouselView_PositionSelected;

                _position = position;
            }

            var positionChangedArgs = new PositionChangedEventArgs()
            {
                NewPosition = _position,
                OldPosition = oldPosition
            };

            OnPositionChanged(positionChangedArgs);
        }
示例#3
0
        protected virtual void OnPositionChanging(ref PositionChangingEventArgs e)
        {
            PositionChangingEventHandler handler = PositionChanging;

            handler?.Invoke(this, e);
        }