Exemple #1
0
        protected void OnItemSizeChanged(object sender, SizeChangedEventArgs e)
        {
            CoverFlowItem item  = sender as CoverFlowItem;
            int           index = items.IndexOf(item);

            LayoutChild(item, index);
        }
Exemple #2
0
        protected void LayoutChild(CoverFlowItem item, int index)
        {
            double m = ItemsPresenter.ActualWidth / 2;

            int    b  = index - SelectedIndex;
            double mu = 0;

            if (b < 0)
            {
                mu = -1;
            }
            else if (b > 0)
            {
                mu = 1;
            }
            double x = (m + ((double)b * l + (k * mu))) - (item.ActualWidth / 2);

            double s = mu == 0 ? 1 : Scale;

            int zindex = items.Count - Math.Abs(b);

            if (((x + item.ActualWidth) < 0 || x > ItemsPresenter.ActualWidth) &&
                ((item.X + item.ActualWidth) < 0 || item.X > ItemsPresenter.ActualWidth) &&
                !((x + item.ActualWidth) < 0 && item.X > ItemsPresenter.ActualWidth) &&
                !((item.X + item.ActualWidth) < 0 && x > ItemsPresenter.ActualWidth))
            {
                item.SetValues(x, zindex, r * mu, z * Math.Abs(mu), s, duration, EasingFunction, false);
            }
            else
            {
                item.SetValues(x, zindex, r * mu, z * Math.Abs(mu), s, duration, EasingFunction, true);
            }
        }
Exemple #3
0
        protected CoverFlowItem GetItemContainerForObject(object value)
        {
            CoverFlowItem item = value as CoverFlowItem;

            if (item == null)
            {
                this.ObjectToItemContainer.TryGetValue(value, out item);
            }
            return(item);
        }
Exemple #4
0
        protected override void ClearContainerForItemOverride(DependencyObject element, object item)
        {
            base.ClearContainerForItemOverride(element, item);
            CoverFlowItem item2 = element as CoverFlowItem;

            if (item2 != item)
            {
                this.ObjectToItemContainer.Remove(item);
            }
            items.Remove(item2);
        }
Exemple #5
0
        public void UpdatePositions(object value)
        {
            CoverFlowItem item = GetItemContainerForObject(value);

            if (item == null)
            {
                return;
            }

            int index = items.IndexOf(item);

            LayoutChild(item, index);
        }
Exemple #6
0
        protected void OnItemSelected(object sender, EventArgs e)
        {
            CoverFlowItem item = sender as CoverFlowItem;

            if (item == null)
            {
                return;
            }
            int index = items.IndexOf(item);

            if (index >= 0)
            {
                IndexSelected(index);
            }
        }
Exemple #7
0
        protected override Size ArrangeOverride(Size finalSize)
        {
            Size size = base.ArrangeOverride(finalSize);
            RectangleGeometry visibleArea = new RectangleGeometry();
            Rect clip = new Rect(0, 0, ItemsPresenter.ActualWidth, ItemsPresenter.ActualHeight);

            foreach (CoverFlowItem item in items)
            {
                item.Height = ItemsPresenter.ActualHeight;
            }
            visibleArea.Rect    = clip;
            ItemsPresenter.Clip = visibleArea;

            double m = ItemsPresenter.ActualWidth / 2;

            for (int index = 0; index < items.Count; index++)
            {
                CoverFlowItem item = items[index];
                int           b    = index - SelectedIndex;
                double        mu   = 0;
                if (b < 0)
                {
                    mu = -1;
                }
                else if (b > 0)
                {
                    mu = 1;
                }
                double x = (m + ((double)b * l + (k * mu))) - (item.ActualWidth / 2);

                double s = mu == 0 ? 1 : Scale;

                int zindex = items.Count - Math.Abs(b);

                item.X         = x;
                item.YRotation = r * mu;
                item.ZOffset   = z * Math.Abs(mu);
                item.Scale     = s;
            }

            return(size);
        }
Exemple #8
0
        protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
        {
            base.PrepareContainerForItemOverride(element, item);

            CoverFlowItem item2 = element as CoverFlowItem;

            if (item2 != item)
            {
                this.ObjectToItemContainer[item] = item2;
            }
            if (!items.Contains(item2))
            {
                items.Add(item2);
                item2.ItemSelected += OnItemSelected;
                item2.SizeChanged  += OnItemSizeChanged;
            }
            var itemsSource = ItemsSource as ICollection;

            if (itemsSource != null && itemsSource.Count == 1)
            {
                IndexSelected(0, false);
            }
        }
Exemple #9
0
        protected override DependencyObject GetContainerForItemOverride()
        {
            CoverFlowItem item = new CoverFlowItem();

            return(item);
        }