private void SearchBoxUnicode_OnTextChanged(object sender, TextChangedEventArgs e) { var unicodeIndex = SearchBoxUnicode.Text.Trim(); int intIndex = Utils.ParseHexString(unicodeIndex); var ch = ViewModel.Chars.FirstOrDefault(c => c.UnicodeIndex == intIndex); if (null != ch) { CharGrid.SelectedItem = ch; CharGrid.ScrollIntoView(ch); } }
private void MainPage_Loaded(object sender, RoutedEventArgs e) { _coreTitleBar.LayoutMetricsChanged += OnLayoutMetricsChanged; Window.Current.SizeChanged += OnWindowSizeChanged; UpdateLayoutMetrics(); if (null != LstFontFamily.SelectedItem) { LstFontFamily.ScrollIntoView(LstFontFamily.SelectedItem, ScrollIntoViewAlignment.Leading); if (null != CharGrid.SelectedItem) { CharGrid.ScrollIntoView(CharGrid.SelectedItem, ScrollIntoViewAlignment.Leading); } } }
public void UpdateRampToGridTransition() { if (TypeRampList == null) { return; } // 1. Build base storyboard and assign it as the // VisualState transition Storyboard sb = new Storyboard(); //sb.Children.Add(GridToTypeBase); RampToGridTransition.Storyboard = sb; var toChilds = CharGrid.Realize().ItemsPanelRoot.Children .OfType <FrameworkElement>() .Where(c => c.IsInViewport(CharGrid)) .OrderBy(c => Guid.NewGuid()).ToList(); var childs = GetTypeRampAnimationTargets(); var fromDepth = 400; double toDepth = -300; TimeSpan charStagger = TimeSpan.FromMilliseconds(250d / toChilds.Count); TimeSpan startOffset = TimeSpan.FromSeconds(0); TimeSpan staggerTime = TimeSpan.FromMilliseconds(40); TimeSpan duration = TimeSpan.FromMilliseconds(250); TimeSpan durationOpacityOut = TimeSpan.FromMilliseconds(150); TimeSpan durationOpacityIn = TimeSpan.FromMilliseconds(300); foreach (var item in childs) { // 3.0. Get the item and it's opacity var trans = item.GetCompositeTransform3D(); trans.RotationX = trans.RotationY = trans.RotationZ = 0; // 3.2. Animate the opacity sb.CreateTimeline <DoubleAnimationUsingKeyFrames>(item, TargetProperty.Opacity) .AddKeyFrame(TimeSpan.Zero, item.Opacity) .AddKeyFrame(startOffset, item.Opacity) .AddKeyFrame(startOffset.Add(durationOpacityOut), 0, KeySplines.DepthZoomOpacity); // 3.3. Animate the 3D depth translation if (toDepth != 0) { sb.CreateTimeline <DoubleAnimationUsingKeyFrames>(item, TargetProperty.CompositeTransform3D.TranslateZ) .AddKeyFrame(TimeSpan.Zero, trans.TranslateZ) .AddKeyFrame(startOffset, trans.TranslateZ) .AddKeyFrame(startOffset.Add(duration), toDepth, KeySplines.EntranceTheme); } // 3.4. Increment start offset startOffset = startOffset.Add(staggerTime); } sb.CreateTimeline <ObjectAnimationUsingKeyFrames>(SearchBox, TargetProperty.Visiblity) .AddKeyFrame(0, Visibility.Visible); sb.CreateTimeline <DoubleAnimationUsingKeyFrames>(SearchBox, TargetProperty.CompositeTransform.TranslateY) .AddKeyFrame(0, -75) .AddKeyFrame(startOffset, -75) .AddKeyFrame(startOffset.TotalSeconds + 0.4, 0, new BackEase { Amplitude = 0.8, EasingMode = EasingMode.EaseOut }); sb.CreateTimeline <ObjectAnimationUsingKeyFrames>(TypeRampRoot, TargetProperty.Visiblity) .AddKeyFrame(startOffset.Add(duration.Multiply(0.8)), Visibility.Collapsed); sb.CreateTimeline <ObjectAnimationUsingKeyFrames>(CharGridRoot, TargetProperty.Visiblity) .AddKeyFrame(0, Visibility.Collapsed) .AddKeyFrame(startOffset, Visibility.Visible); // X. Show PreviewGrid, Splitter, CopyPane sb.Children.Add(CreateShowPreview(startOffset.TotalSeconds)); if (CopySequenceRoot is not null) { sb.CreateTimeline <DoubleAnimationUsingKeyFrames>(CopySequenceContent, TargetProperty.CompositeTransform.TranslateY) .AddKeyFrame(0, CopySequenceContent.RenderSize.Height) .AddKeyFrame(startOffset, CopySequenceContent.RenderSize.Height) .AddKeyFrame(startOffset.TotalSeconds + CompositionFactory.DefaultOffsetDuration, 0, KeySplines.CompositionDefault); sb.CreateTimeline <ObjectAnimationUsingKeyFrames>(CopySequenceContent, TargetProperty.Visiblity) .AddKeyFrame(0, Visibility.Collapsed) .AddKeyFrame(startOffset, Visibility.Visible); } // 3. Now let's build the storyboard! foreach (var item in toChilds) { // 3.0. Get the item and it's opacity //Double _originalOpacity = _opacitys[i]; item.GetCompositeTransform3D(); // 3.1. Check AddedDelay //startOffset = startOffset.Add(Properties.GetAddedDelay(item)); // 3.2. Animate the opacity sb.CreateTimeline <DoubleAnimationUsingKeyFrames>(item, TargetProperty.Opacity) .AddKeyFrame(TimeSpan.Zero, 0) .AddKeyFrame(startOffset, 0) .AddKeyFrame(startOffset.Add(durationOpacityIn), 1, KeySplines.DepthZoomOpacity); // 3.3. Animate the 3D depth translation if (fromDepth != 0) { sb.CreateTimeline <DoubleAnimationUsingKeyFrames>(item, TargetProperty.CompositeTransform3D.TranslateZ) .AddKeyFrame(TimeSpan.Zero, fromDepth) .AddKeyFrame(startOffset, fromDepth) .AddKeyFrame(startOffset.Add(duration), 0, KeySplines.EntranceTheme); } //var x = _r.Next(-90, 90); //sb.CreateTimeline<DoubleAnimationUsingKeyFrames>(item, TargetProperty.CompositeTransform3D.RotationX) // .AddKeyFrame(TimeSpan.Zero, x) // .AddKeyFrame(startOffset, x) // .AddKeyFrame(startOffset.Add(duration), 0, KeySplines.EntranceTheme); //var y = _r.Next(-90, 90); //sb.CreateTimeline<DoubleAnimationUsingKeyFrames>(item, TargetProperty.CompositeTransform3D.RotationY) // .AddKeyFrame(TimeSpan.Zero, y) // .AddKeyFrame(startOffset, y) // .AddKeyFrame(startOffset.Add(duration), 0, KeySplines.EntranceTheme); //var z = _r.Next(-90, 90); //sb.CreateTimeline<DoubleAnimationUsingKeyFrames>(item, TargetProperty.CompositeTransform3D.RotationZ) // .AddKeyFrame(TimeSpan.Zero, z) // .AddKeyFrame(startOffset, z) // .AddKeyFrame(startOffset.Add(duration), 0, KeySplines.EntranceTheme); // 3.4. Increment start offset startOffset = startOffset.Add(charStagger); } }