private void ContainerItem_Loaded(object sender, RoutedEventArgs e) { var itemsPanel = (ItemsWrapGrid)_patternPickerGridView.ItemsPanelRoot; var itemContainer = (GridViewItem)sender; itemContainer.Loaded -= this.ContainerItem_Loaded; var button = itemContainer.FindDescendant <Button>(); if (button != null) { button.Click -= MoreInfoClicked; button.Click += MoreInfoClicked; } if (!_isCreatorsUpdateOrAbove) { return; } var itemIndex = _patternPickerGridView.IndexFromContainer(itemContainer); var referenceIndex = itemsPanel.FirstVisibleIndex; if (_patternPickerGridView.SelectedIndex >= 0) { referenceIndex = _patternPickerGridView.SelectedIndex; } var relativeIndex = Math.Abs(itemIndex - referenceIndex); if (itemContainer.Content != CurrentPattern && itemIndex >= 0 && itemIndex >= itemsPanel.FirstVisibleIndex && itemIndex <= itemsPanel.LastVisibleIndex) { var staggerDelay = TimeSpan.FromMilliseconds(relativeIndex * 30); var animationCollection = new AnimationCollection() { new OpacityAnimation() { From = 0, To = 1, Duration = TimeSpan.FromMilliseconds(400), Delay = staggerDelay, SetInitialValueBeforeDelay = true }, new ScaleAnimation() { From = "0.9", To = "1", Duration = TimeSpan.FromMilliseconds(400), Delay = staggerDelay } }; VisualEx.SetNormalizedCenterPoint(itemContainer, "0.5"); animationCollection.StartAnimation(itemContainer); } }
private void OnItemContainerLoaded(object sender, RoutedEventArgs e) { var itemsPanel = (ItemsWrapGrid)this.ItemsPanelRoot; var itemContainer = (GridViewItem)sender; itemContainer.Loaded -= this.OnItemContainerLoaded; if (!_isCreatorsUpdateOrAbove) { return; } var itemIndex = this.IndexFromContainer(itemContainer); var referenceIndex = itemsPanel.FirstVisibleIndex; if (this.SelectedIndex >= 0) { referenceIndex = this.SelectedIndex; } var relativeIndex = Math.Abs(itemIndex - referenceIndex); if (itemIndex >= 0 && itemIndex >= itemsPanel.FirstVisibleIndex && itemIndex <= itemsPanel.LastVisibleIndex) { var staggerDelay = TimeSpan.FromMilliseconds(relativeIndex * 30); var animationCollection = new AnimationCollection() { new OpacityAnimation() { From = 0, To = 1, Duration = TimeSpan.FromMilliseconds(400), Delay = staggerDelay, SetInitialValueBeforeDelay = true }, new ScaleAnimation() { From = "0.9", To = "1", Duration = TimeSpan.FromMilliseconds(400), Delay = staggerDelay } }; VisualEx.SetNormalizedCenterPoint(itemContainer, "0.5"); animationCollection.StartAnimation(itemContainer); } }