예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }