Пример #1
0
        private void ContainerItem_Loaded(object sender, RoutedEventArgs e)
        {
            var itemsPanel    = (ItemsStackPanel)feeditems.ItemsPanelRoot;
            var itemContainer = (ListViewItem)sender;

            var itemIndex = feeditems.IndexFromContainer(itemContainer);

            var relativeIndex = itemIndex - itemsPanel.FirstVisibleIndex;

            Grid uc;

            if (itemContainer.ContentTemplateRoot as SwipeControl != null)
            {
                uc = (itemContainer.ContentTemplateRoot as SwipeControl).Content as Grid;
            }
            else
            {
                uc = itemContainer.ContentTemplateRoot as Grid;
            }

            if (itemContainer.Content != ViewModel.PersistedEpisode && itemIndex >= 0 && itemIndex >= itemsPanel.FirstVisibleIndex && itemIndex <= itemsPanel.LastVisibleIndex)
            {
                var itemVisual = ElementCompositionPreview.GetElementVisual(uc);
                ElementCompositionPreview.SetIsTranslationEnabled(uc, true);

                var staggerDelay = TimeSpan.FromMilliseconds(relativeIndex * 100);

                var offsetAnimation = VisualHelpers.CreateHorizontalOffsetAnimation(0.7, 150, staggerDelay.TotalSeconds);
                itemVisual.StartAnimation("Translation.X", offsetAnimation);

                var opacityAnimation = VisualHelpers.CreateOpacityAnimation(0.5);
                opacityAnimation.DelayBehavior = Windows.UI.Composition.AnimationDelayBehavior.SetInitialValueBeforeDelay;
                opacityAnimation.DelayTime     = staggerDelay;
                itemVisual.StartAnimation("Opacity", opacityAnimation);
            }

            itemContainer.Loaded -= this.ContainerItem_Loaded;
        }