示例#1
0
        public void VerifySimpleCollectionScenario()
        {
            var objects = new Dictionary <string, WeakReference>();

            RunOnUIThread.Execute(() =>
            {
                var rating        = new RatingControl();
                objects["Rating"] = new WeakReference(rating);

                var colorPicker        = new ColorPicker();
                objects["ColorPicker"] = new WeakReference(colorPicker);

                var navigationView        = new NavigationView();
                objects["NavigationView"] = new WeakReference(navigationView);

                var parallaxView        = new ParallaxView();
                objects["ParallaxView"] = new WeakReference(parallaxView);

                var scrollPresenter        = new ScrollPresenter();
                objects["ScrollPresenter"] = new WeakReference(scrollPresenter);

                if (PlatformConfiguration.IsOsVersionGreaterThanOrEqual(OSVersion.Redstone2))
                {
                    var scrollView        = new ScrollView();
                    objects["ScrollView"] = new WeakReference(scrollView);
                }
            });
            IdleSynchronizer.Wait();
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            RunOnUIThread.Execute(() => CheckLeaks(objects));
        }
示例#2
0
        private void ScrollView_BringingIntoView(ScrollView sender, ScrollingBringingIntoViewEventArgs args)
        {
            string asyncEventMessage = "BringingIntoView ScrollPresenter=" + sender.Name;

            asyncEventMessage += ", TargetHorizontalOffset=" + args.TargetHorizontalOffset + ", TargetVerticalOffset=" + args.TargetVerticalOffset;
            asyncEventMessage += ", OffsetsChangeCorrelationId=" + args.CorrelationId;
            asyncEventMessage += ", SnapPointsMode=" + args.SnapPointsMode;
            asyncEventMessage += ", RequestEventArgs.AnimationDesired=" + args.RequestEventArgs.AnimationDesired + ", RequestEventArgs.Handled=" + args.RequestEventArgs.Handled;
            asyncEventMessage += ", RequestEventArgs.HorizontalAlignmentRatio=" + args.RequestEventArgs.HorizontalAlignmentRatio + ", RequestEventArgs.VerticalAlignmentRatio=" + args.RequestEventArgs.VerticalAlignmentRatio;
            asyncEventMessage += ", RequestEventArgs.HorizontalOffset=" + args.RequestEventArgs.HorizontalOffset + ", RequestEventArgs.VerticalOffset=" + args.RequestEventArgs.VerticalOffset;
            asyncEventMessage += ", RequestEventArgs.TargetRect=" + args.RequestEventArgs.TargetRect + ", RequestEventArgs.TargetElement=" + (args.RequestEventArgs.TargetElement as FrameworkElement).Name;
            asyncEventMessage += ", OriginalSource=";
            if (args.RequestEventArgs.OriginalSource == null)
            {
                asyncEventMessage += "null";
            }
            else
            {
                asyncEventMessage += (args.RequestEventArgs.OriginalSource as FrameworkElement).Name;
            }
            AppendAsyncEventMessage(asyncEventMessage);

            if (chkCancelOperationInBringingIntoView.IsChecked == true)
            {
                args.Cancel = true;
            }
        }
示例#3
0
        private void UseScrollView(ScrollView sv2)
        {
            if (scrollView == sv2 || sv2 == null)
            {
                return;
            }

            try
            {
                if (scrollView == null && (chkLogScrollViewMessages.IsChecked == true || chkLogScrollPresenterMessages.IsChecked == true))
                {
                    MUXControlsTestHooks.LoggingMessage += MUXControlsTestHooks_LoggingMessage;

                    if (chkLogScrollPresenterMessages.IsChecked == true)
                    {
                        MUXControlsTestHooks.SetLoggingLevelForType("ScrollPresenter", isLoggingInfoLevel: true, isLoggingVerboseLevel: true);
                    }
                    if (chkLogScrollViewMessages.IsChecked == true)
                    {
                        MUXControlsTestHooks.SetLoggingLevelForType("ScrollView", isLoggingInfoLevel: true, isLoggingVerboseLevel: true);
                    }
                }

                scrollView = sv2;

                UpdateContentOrientation();
                UpdateHorizontalScrollMode();
                UpdateVerticalScrollMode();
                UpdateZoomMode();

                UpdateWidth();
                UpdateHeight();
                UpdatePadding();
                UpdateHorizontalScrollBarVisibility();
                UpdateVerticalScrollBarVisibility();

                chkIsEnabled.IsChecked = scrollView.IsEnabled;
                chkIsTabStop.IsChecked = scrollView.IsTabStop;

                UpdateContentWidth();
                UpdateContentHeight();
                UpdateContentMargin();

                Control contentAsC = scrollView.Content as Control;
                if (contentAsC != null)
                {
                    chkIsContentEnabled.IsChecked = contentAsC.IsEnabled;
                    chkIsContentTabStop.IsChecked = contentAsC.IsTabStop;
                }
            }
            catch (Exception ex)
            {
                txtExceptionReport.Text = ex.ToString();
                lstLogs.Items.Add(ex.ToString());
            }
        }
示例#4
0
        public void VerifyPropertyValuesAfterTemplateApplication()
        {
            if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.Redstone2))
            {
                Log.Warning("Test is disabled on pre-RS2 because ScrollView not supported pre-RS2");
                return;
            }

            using (PrivateLoggingHelper privateSVLoggingHelper = new PrivateLoggingHelper("ScrollView", "ScrollPresenter"))
            {
                ScrollView     scrollView = null;
                Rectangle      rectangleScrollViewContent = null;
                AutoResetEvent scrollViewLoadedEvent      = new AutoResetEvent(false);
                AutoResetEvent scrollViewUnloadedEvent    = new AutoResetEvent(false);

                RunOnUIThread.Execute(() =>
                {
                    rectangleScrollViewContent = new Rectangle();
                    scrollView = new ScrollView();

                    SetupDefaultUI(scrollView, rectangleScrollViewContent, scrollViewLoadedEvent, scrollViewUnloadedEvent);
                });

                WaitForEvent("Waiting for Loaded event", scrollViewLoadedEvent);

                RunOnUIThread.Execute(() =>
                {
                    Log.Comment("Verifying ScrollView property values after Loaded event");
                    Verify.AreEqual(scrollView.Content, rectangleScrollViewContent);
                    Verify.IsNotNull(ScrollViewTestHooks.GetScrollPresenterPart(scrollView));
                    Verify.AreEqual(ScrollViewTestHooks.GetScrollPresenterPart(scrollView).Content, rectangleScrollViewContent);
                    Verify.IsNotNull(scrollView.HorizontalScrollController);
                    Verify.IsNotNull(scrollView.VerticalScrollController);
                    Verify.AreEqual(scrollView.ExtentWidth, c_defaultUIScrollViewContentWidth);
                    Verify.AreEqual(scrollView.ExtentHeight, c_defaultUIScrollViewContentHeight);
                    Verify.AreEqual(scrollView.ViewportWidth, c_defaultUIScrollViewWidth);
                    Verify.AreEqual(scrollView.ViewportHeight, c_defaultUIScrollViewHeight);
                    Verify.AreEqual(scrollView.ScrollableWidth, c_defaultUIScrollViewContentWidth - c_defaultUIScrollViewWidth);
                    Verify.AreEqual(scrollView.ScrollableHeight, c_defaultUIScrollViewContentHeight - c_defaultUIScrollViewHeight);

                    Log.Comment("Resetting window content and ScrollView");
                    Content    = null;
                    scrollView = null;
                });

                WaitForEvent("Waiting for Unloaded event", scrollViewUnloadedEvent);

                IdleSynchronizer.Wait();
                Log.Comment("Garbage collecting...");
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                Log.Comment("Done");
            }
        }
示例#5
0
        public void VerifyDefaultPropertyValues()
        {
            if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.Redstone2))
            {
                Log.Warning("Test is disabled on pre-RS2 because ScrollView not supported pre-RS2");
                return;
            }

            RunOnUIThread.Execute(() =>
            {
                ScrollView scrollView = new ScrollView();
                Verify.IsNotNull(scrollView);

                Log.Comment("Verifying ScrollView default property values");
                Verify.IsNull(scrollView.Content);
                Verify.IsNull(ScrollViewTestHooks.GetScrollPresenterPart(scrollView));
                Verify.IsNull(scrollView.HorizontalScrollController);
                Verify.IsNull(scrollView.VerticalScrollController);
#if USE_SCROLLMODE_AUTO
                Verify.AreEqual(scrollView.ComputedHorizontalScrollMode, c_defaultComputedHorizontalScrollMode);
                Verify.AreEqual(scrollView.ComputedVerticalScrollMode, c_defaultComputedVerticalScrollMode);
#endif
                Verify.AreEqual(scrollView.IgnoredInputKind, c_defaultIgnoredInputKind);
                Verify.AreEqual(scrollView.ContentOrientation, c_defaultContentOrientation);
                Verify.AreEqual(scrollView.HorizontalScrollChainingMode, c_defaultHorizontalScrollChainingMode);
                Verify.AreEqual(scrollView.VerticalScrollChainingMode, c_defaultVerticalScrollChainingMode);
                Verify.AreEqual(scrollView.HorizontalScrollRailingMode, c_defaultHorizontalScrollRailingMode);
                Verify.AreEqual(scrollView.VerticalScrollRailingMode, c_defaultVerticalScrollRailingMode);
                Verify.AreEqual(scrollView.HorizontalScrollMode, c_defaultHorizontalScrollMode);
                Verify.AreEqual(scrollView.VerticalScrollMode, c_defaultVerticalScrollMode);
                Verify.AreEqual(scrollView.ZoomMode, c_defaultZoomMode);
                Verify.AreEqual(scrollView.ZoomChainingMode, c_defaultZoomChainingMode);
                Verify.IsGreaterThan(scrollView.MinZoomFactor, c_defaultMinZoomFactor - c_epsilon);
                Verify.IsLessThan(scrollView.MinZoomFactor, c_defaultMinZoomFactor + c_epsilon);
                Verify.IsGreaterThan(scrollView.MaxZoomFactor, c_defaultMaxZoomFactor - c_epsilon);
                Verify.IsLessThan(scrollView.MaxZoomFactor, c_defaultMaxZoomFactor + c_epsilon);
                Verify.AreEqual(scrollView.HorizontalAnchorRatio, c_defaultAnchorRatio);
                Verify.AreEqual(scrollView.VerticalAnchorRatio, c_defaultAnchorRatio);
                Verify.AreEqual(scrollView.ExtentWidth, 0.0);
                Verify.AreEqual(scrollView.ExtentHeight, 0.0);
                Verify.AreEqual(scrollView.ViewportWidth, 0.0);
                Verify.AreEqual(scrollView.ViewportHeight, 0.0);
                Verify.AreEqual(scrollView.ScrollableWidth, 0.0);
                Verify.AreEqual(scrollView.ScrollableHeight, 0.0);
            });
        }
        private void ResetView(ScrollView scrollView)
        {
            ScrollPresenter scrollPresenter   = ScrollViewTestHooks.GetScrollPresenterPart(scrollView);
            string          scrollPresenterId = (VisualTreeHelper.GetParent(scrollPresenter) as FrameworkElement).Name + "." + scrollPresenter.Name;

            int viewChangeId = scrollPresenter.ScrollTo(0.0, 0.0, new ScrollingScrollOptions(AnimationMode.Disabled, SnapPointsMode.Ignore)).OffsetsChangeId;

            this.fullLogs.Add(scrollPresenterId + " ScrollTo requested. Id=" + viewChangeId);

            viewChangeId = scrollPresenter.ZoomTo(1.0f, System.Numerics.Vector2.Zero, new ScrollingZoomOptions(AnimationMode.Disabled, SnapPointsMode.Ignore)).ZoomFactorChangeId;
            this.fullLogs.Add(scrollPresenterId + " ZoomTo requested. Id=" + viewChangeId);

            chkLogUpdated.IsChecked = false;

            if (scrollView == this.scrollView52)
            {
                scrollView52ZoomFactorChangeId = viewChangeId;
            }
        }
        private void CmbIgnoredInputKind_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            InputKind  ignoredInputKind;
            ScrollView scrollView = SelectedScrollView;

            switch (cmbIgnoredInputKind.SelectedIndex)
            {
            case 0:
                return;

            case 1:
                ignoredInputKind = InputKind.None;
                break;

            case 2:
                ignoredInputKind = InputKind.Touch;
                break;

            case 3:
                ignoredInputKind = InputKind.Pen;
                break;

            case 4:
                ignoredInputKind = InputKind.MouseWheel;
                break;

            case 5:
                ignoredInputKind = InputKind.Keyboard;
                break;

            case 6:
                ignoredInputKind = InputKind.Gamepad;
                break;

            default:
                ignoredInputKind = InputKind.All;
                break;
            }

            scrollView.IgnoredInputKind = ignoredInputKind;
        }
示例#8
0
 private void ScrollView_ScrollCompleted(ScrollView sender, ScrollingScrollCompletedEventArgs args)
 {
     AppendAsyncEventMessage($"ScrollView.ScrollCompleted OffsetsChangeId={args.ScrollInfo.OffsetsChangeId}");
 }
示例#9
0
 private void ScrollView_ZoomAnimationStarting(ScrollView sender, ScrollingZoomAnimationStartingEventArgs args)
 {
     AppendAsyncEventMessage($"ScrollView.ZoomAnimationStarting ZoomFactorChangeId={args.ZoomInfo.ZoomFactorChangeId}, CenterPoint={args.CenterPoint}");
 }
示例#10
0
 private void ScrollView_ScrollAnimationStarting(ScrollView sender, ScrollingScrollAnimationStartingEventArgs args)
 {
     AppendAsyncEventMessage($"ScrollView.ScrollAnimationStarting OffsetsChangeId={args.ScrollInfo.OffsetsChangeId}");
 }
示例#11
0
 private void ScrollView_ViewChanged(ScrollView sender, object args)
 {
     AppendAsyncEventMessage($"ScrollView.ViewChanged HorizontalOffset={sender.HorizontalOffset.ToString()}, VerticalOffset={sender.VerticalOffset}, ZoomFactor={sender.ZoomFactor}");
 }
示例#12
0
 private void ScrollView_StateChanged(ScrollView sender, object args)
 {
     AppendAsyncEventMessage($"ScrollView.StateChanged {sender.State.ToString()}");
 }
示例#13
0
 private void ScrollView_ExtentChanged(ScrollView sender, object args)
 {
     AppendAsyncEventMessage($"ScrollView.ExtentChanged ExtentWidth={sender.ExtentWidth}, ExtentHeight={sender.ExtentHeight}");
 }
示例#14
0
        public void VerifyAnchorCandidateRegistration()
        {
            if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.Redstone2))
            {
                Log.Warning("Test is disabled on pre-RS2 because ScrollView not supported pre-RS2");
                return;
            }

            using (PrivateLoggingHelper privateSVLoggingHelper = new PrivateLoggingHelper("ScrollView", "ScrollPresenter"))
            {
                int             expectedAnchorCandidatesCount = 0;
                ScrollPresenter scrollPresenter                = null;
                ScrollView      scrollView                     = null;
                Rectangle       rectangleScrollViewContent     = null;
                AutoResetEvent  scrollViewLoadedEvent          = new AutoResetEvent(false);
                AutoResetEvent  scrollViewAnchorRequestedEvent = new AutoResetEvent(false);

                RunOnUIThread.Execute(() =>
                {
                    rectangleScrollViewContent = new Rectangle();
                    scrollView = new ScrollView();
                    scrollView.HorizontalAnchorRatio = 0.1;

                    SetupDefaultUI(scrollView, rectangleScrollViewContent, scrollViewLoadedEvent);

                    scrollView.AnchorRequested += (ScrollView sender, ScrollingAnchorRequestedEventArgs args) =>
                    {
                        Log.Comment("ScrollView.AnchorRequested event handler. args.AnchorCandidates.Count: " + args.AnchorCandidates.Count);
                        Verify.IsNull(args.AnchorElement);
                        Verify.AreEqual(expectedAnchorCandidatesCount, args.AnchorCandidates.Count);
                        scrollViewAnchorRequestedEvent.Set();
                    };
                });

                WaitForEvent("Waiting for Loaded event", scrollViewLoadedEvent);

                RunOnUIThread.Execute(() =>
                {
                    Log.Comment("Accessing inner ScrollPresenter control");
                    scrollPresenter = ScrollViewTestHooks.GetScrollPresenterPart(scrollView);

                    Log.Comment("Registering Rectangle as anchor candidate");
                    scrollView.RegisterAnchorCandidate(rectangleScrollViewContent);
                    expectedAnchorCandidatesCount = 1;

                    Log.Comment("Forcing ScrollPresenter layout");
                    scrollPresenter.InvalidateArrange();
                });

                WaitForEvent("Waiting for AnchorRequested event", scrollViewAnchorRequestedEvent);

                RunOnUIThread.Execute(() =>
                {
                    Log.Comment("Unregistering Rectangle as anchor candidate");
                    scrollView.UnregisterAnchorCandidate(rectangleScrollViewContent);
                    expectedAnchorCandidatesCount = 0;

                    Log.Comment("Forcing ScrollPresenter layout");
                    scrollPresenter.InvalidateArrange();
                });

                WaitForEvent("Waiting for AnchorRequested event", scrollViewAnchorRequestedEvent);
            }
        }
示例#15
0
        private void VerifyVisualStates(ScrollBarVisibility scrollBarVisibility, bool autoHideScrollControllers)
        {
            using (PrivateLoggingHelper privateSVLoggingHelper = new PrivateLoggingHelper("ScrollView"))
            {
                ScrollView scrollView = null;

                RunOnUIThread.Execute(() =>
                {
                    MUXControlsTestHooks.LoggingMessage += MUXControlsTestHooks_LoggingMessageForVisualStateChange;
                    m_scrollViewVisualStateCounts        = new ScrollViewVisualStateCounts();
                    scrollView = new ScrollView();
                });

                using (ScrollViewTestHooksHelper scrollViewTestHooksHelper = new ScrollViewTestHooksHelper(scrollView, autoHideScrollControllers))
                {
                    Rectangle      rectangleScrollViewContent = null;
                    AutoResetEvent scrollViewLoadedEvent      = new AutoResetEvent(false);
                    AutoResetEvent scrollViewUnloadedEvent    = new AutoResetEvent(false);

                    RunOnUIThread.Execute(() =>
                    {
                        rectangleScrollViewContent = new Rectangle();
                        scrollView.HorizontalScrollBarVisibility = scrollBarVisibility;
                        scrollView.VerticalScrollBarVisibility   = scrollBarVisibility;

                        SetupDefaultUI(
                            scrollView: scrollView,
                            rectangleScrollViewContent: rectangleScrollViewContent,
                            scrollViewLoadedEvent: scrollViewLoadedEvent,
                            scrollViewUnloadedEvent: scrollViewUnloadedEvent,
                            setAsContentRoot: true,
                            useParentGrid: true);
                    });

                    WaitForEvent("Waiting for Loaded event", scrollViewLoadedEvent);

                    RunOnUIThread.Execute(() =>
                    {
                        MUXControlsTestHooks.LoggingMessage -= MUXControlsTestHooks_LoggingMessageForVisualStateChange;
                        Log.Comment($"VerifyVisualStates: isEnabled:True, scrollBarVisibility:{scrollBarVisibility}, autoHideScrollControllers:{autoHideScrollControllers}");

                        VerifyVisualStates(
                            expectedMouseIndicatorStateCount: autoHideScrollControllers ? 0u : (scrollBarVisibility == ScrollBarVisibility.Auto ? 2u : 3u),
                            expectedTouchIndicatorStateCount: 0,
                            expectedNoIndicatorStateCount: autoHideScrollControllers ? (scrollBarVisibility == ScrollBarVisibility.Auto ? 2u : 3u) : 0u,
                            expectedScrollBarsSeparatorCollapsedStateCount: autoHideScrollControllers ? (scrollBarVisibility == ScrollBarVisibility.Auto ? 1u : 3u) : 0u,
                            expectedScrollBarsSeparatorCollapsedDisabledStateCount: 0,
                            expectedScrollBarsSeparatorExpandedStateCount: autoHideScrollControllers ? 0u : (scrollBarVisibility == ScrollBarVisibility.Auto ? 1u : 3u),
                            expectedScrollBarsSeparatorDisplayedWithoutAnimationStateCount: 0,
                            expectedScrollBarsSeparatorExpandedWithoutAnimationStateCount: 0,
                            expectedScrollBarsSeparatorCollapsedWithoutAnimationStateCount: 0);

                        m_scrollViewVisualStateCounts.ResetStateCounts();
                        MUXControlsTestHooks.LoggingMessage += MUXControlsTestHooks_LoggingMessageForVisualStateChange;

                        Log.Comment("Disabling ScrollView");
                        scrollView.IsEnabled = false;
                    });

                    IdleSynchronizer.Wait();

                    RunOnUIThread.Execute(() =>
                    {
                        MUXControlsTestHooks.LoggingMessage -= MUXControlsTestHooks_LoggingMessageForVisualStateChange;
                        Log.Comment($"VerifyVisualStates: isEnabled:False, scrollBarVisibility:{scrollBarVisibility}, autoHideScrollControllers:{autoHideScrollControllers}");

                        VerifyVisualStates(
                            expectedMouseIndicatorStateCount: autoHideScrollControllers ? 0u : (scrollBarVisibility == ScrollBarVisibility.Auto ? 1u : 3u),
                            expectedTouchIndicatorStateCount: 0,
                            expectedNoIndicatorStateCount: autoHideScrollControllers ? (scrollBarVisibility == ScrollBarVisibility.Auto ? 1u : 3u) : 0u,
                            expectedScrollBarsSeparatorCollapsedStateCount: 0,
                            expectedScrollBarsSeparatorCollapsedDisabledStateCount: scrollBarVisibility == ScrollBarVisibility.Auto ? 0u : 3u,
                            expectedScrollBarsSeparatorExpandedStateCount: 0,
                            expectedScrollBarsSeparatorDisplayedWithoutAnimationStateCount: 0,
                            expectedScrollBarsSeparatorExpandedWithoutAnimationStateCount: 0,
                            expectedScrollBarsSeparatorCollapsedWithoutAnimationStateCount: 0);

                        m_scrollViewVisualStateCounts.ResetStateCounts();
                        MUXControlsTestHooks.LoggingMessage += MUXControlsTestHooks_LoggingMessageForVisualStateChange;

                        Log.Comment("Enabling ScrollView");
                        scrollView.IsEnabled = true;
                    });

                    IdleSynchronizer.Wait();

                    RunOnUIThread.Execute(() =>
                    {
                        MUXControlsTestHooks.LoggingMessage -= MUXControlsTestHooks_LoggingMessageForVisualStateChange;
                        Log.Comment($"VerifyVisualStates: isEnabled:True, scrollBarVisibility:{scrollBarVisibility}, autoHideScrollControllers:{autoHideScrollControllers}");

                        VerifyVisualStates(
                            expectedMouseIndicatorStateCount: autoHideScrollControllers ? 0u : 3u,
                            expectedTouchIndicatorStateCount: 0,
                            expectedNoIndicatorStateCount: autoHideScrollControllers ? 3u : 0u,
                            expectedScrollBarsSeparatorCollapsedStateCount: autoHideScrollControllers ? (scrollBarVisibility == ScrollBarVisibility.Auto ? 2u : 3u) : 0u,
                            expectedScrollBarsSeparatorCollapsedDisabledStateCount: 0,
                            expectedScrollBarsSeparatorExpandedStateCount: autoHideScrollControllers ? 0u : (scrollBarVisibility == ScrollBarVisibility.Auto ? 2u : 3u),
                            expectedScrollBarsSeparatorDisplayedWithoutAnimationStateCount: 0,
                            expectedScrollBarsSeparatorExpandedWithoutAnimationStateCount: 0,
                            expectedScrollBarsSeparatorCollapsedWithoutAnimationStateCount: 0);

                        Log.Comment("Resetting window content");
                        Content = null;
                        m_scrollViewVisualStateCounts = null;
                    });

                    WaitForEvent("Waiting for Unloaded event", scrollViewUnloadedEvent);
                }
            }
        }
示例#16
0
        public void VerifyScrollPresenterAttachedProperties()
        {
            if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.Redstone2))
            {
                Log.Warning("Test is disabled on pre-RS2 because ScrollView not supported pre-RS2");
                return;
            }

            using (PrivateLoggingHelper privateSVLoggingHelper = new PrivateLoggingHelper("ScrollView", "ScrollPresenter"))
            {
                ScrollView     scrollView = null;
                Rectangle      rectangleScrollViewContent = null;
                AutoResetEvent scrollViewLoadedEvent      = new AutoResetEvent(false);
                AutoResetEvent scrollViewUnloadedEvent    = new AutoResetEvent(false);

                RunOnUIThread.Execute(() =>
                {
                    rectangleScrollViewContent = new Rectangle();
                    scrollView = new ScrollView();

                    SetupDefaultUI(scrollView, rectangleScrollViewContent, scrollViewLoadedEvent, scrollViewUnloadedEvent);
                });

                WaitForEvent("Waiting for Loaded event", scrollViewLoadedEvent);

                RunOnUIThread.Execute(() =>
                {
                    Log.Comment("Setting ScrollPresenter-cloned properties to non-default values");
                    scrollView.IgnoredInputKind             = InputKind.MouseWheel | InputKind.Pen;
                    scrollView.ContentOrientation           = ContentOrientation.Horizontal;
                    scrollView.HorizontalScrollChainingMode = ChainingMode.Always;
                    scrollView.VerticalScrollChainingMode   = ChainingMode.Never;
                    scrollView.HorizontalScrollRailingMode  = RailingMode.Disabled;
                    scrollView.VerticalScrollRailingMode    = RailingMode.Disabled;
                    scrollView.HorizontalScrollMode         = ScrollMode.Enabled;
                    scrollView.VerticalScrollMode           = ScrollMode.Disabled;
                    scrollView.ZoomMode         = ZoomMode.Enabled;
                    scrollView.ZoomChainingMode = ChainingMode.Never;
                    scrollView.MinZoomFactor    = 2.0;
                    scrollView.MaxZoomFactor    = 8.0;

                    Log.Comment("Verifying ScrollPresenter-cloned non-default properties");
                    Verify.AreEqual(scrollView.IgnoredInputKind, InputKind.MouseWheel | InputKind.Pen);
                    Verify.AreEqual(scrollView.ContentOrientation, ContentOrientation.Horizontal);
                    Verify.AreEqual(scrollView.HorizontalScrollChainingMode, ChainingMode.Always);
                    Verify.AreEqual(scrollView.VerticalScrollChainingMode, ChainingMode.Never);
                    Verify.AreEqual(scrollView.HorizontalScrollRailingMode, RailingMode.Disabled);
                    Verify.AreEqual(scrollView.VerticalScrollRailingMode, RailingMode.Disabled);
                    Verify.AreEqual(scrollView.HorizontalScrollMode, ScrollMode.Enabled);
                    Verify.AreEqual(scrollView.VerticalScrollMode, ScrollMode.Disabled);
#if USE_SCROLLMODE_AUTO
                    Verify.AreEqual(scrollView.ComputedHorizontalScrollMode, ScrollMode.Enabled);
                    Verify.AreEqual(scrollView.ComputedVerticalScrollMode, ScrollMode.Disabled);
#endif
                    Verify.AreEqual(scrollView.ZoomMode, ZoomMode.Enabled);
                    Verify.AreEqual(scrollView.ZoomChainingMode, ChainingMode.Never);
                    Verify.IsGreaterThan(scrollView.MinZoomFactor, 2.0 - c_epsilon);
                    Verify.IsLessThan(scrollView.MinZoomFactor, 2.0 + c_epsilon);
                    Verify.IsGreaterThan(scrollView.MaxZoomFactor, 8.0 - c_epsilon);
                    Verify.IsLessThan(scrollView.MaxZoomFactor, 8.0 + c_epsilon);

                    Log.Comment("Resetting window content and ScrollView");
                    Content    = null;
                    scrollView = null;
                });

                WaitForEvent("Waiting for Unloaded event", scrollViewUnloadedEvent);

                IdleSynchronizer.Wait();
                Log.Comment("Garbage collecting...");
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                Log.Comment("Done");
            }
        }
示例#17
0
 private void ScrollView_ZoomCompleted(ScrollView sender, ScrollingZoomCompletedEventArgs args)
 {
     AppendAsyncEventMessage($"ScrollView.ZoomCompleted ZoomFactorChangeId={args.ZoomInfo.ZoomFactorChangeId}");
 }
示例#18
0
        private void SetupDefaultUI(
            ScrollView scrollView,
            Rectangle rectangleScrollViewContent   = null,
            AutoResetEvent scrollViewLoadedEvent   = null,
            AutoResetEvent scrollViewUnloadedEvent = null,
            bool setAsContentRoot = true,
            bool useParentGrid    = false)
        {
            Log.Comment("Setting up default UI with ScrollView" + (rectangleScrollViewContent == null ? "" : " and Rectangle"));

            LinearGradientBrush twoColorLGB = new LinearGradientBrush()
            {
                StartPoint = new Point(0, 0), EndPoint = new Point(1, 1)
            };

            GradientStop brownGS = new GradientStop()
            {
                Color = Colors.Brown, Offset = 0.0
            };

            twoColorLGB.GradientStops.Add(brownGS);

            GradientStop orangeGS = new GradientStop()
            {
                Color = Colors.Orange, Offset = 1.0
            };

            twoColorLGB.GradientStops.Add(orangeGS);

            if (rectangleScrollViewContent != null)
            {
                rectangleScrollViewContent.Width  = c_defaultUIScrollViewContentWidth;
                rectangleScrollViewContent.Height = c_defaultUIScrollViewContentHeight;
                rectangleScrollViewContent.Fill   = twoColorLGB;
            }

            Verify.IsNotNull(scrollView);
            scrollView.Name   = "scrollView";
            scrollView.Width  = c_defaultUIScrollViewWidth;
            scrollView.Height = c_defaultUIScrollViewHeight;
            if (rectangleScrollViewContent != null)
            {
                scrollView.Content = rectangleScrollViewContent;
            }

            if (scrollViewLoadedEvent != null)
            {
                scrollView.Loaded += (object sender, RoutedEventArgs e) =>
                {
                    Log.Comment("ScrollView.Loaded event handler");
                    scrollViewLoadedEvent.Set();
                };
            }

            if (scrollViewUnloadedEvent != null)
            {
                scrollView.Unloaded += (object sender, RoutedEventArgs e) =>
                {
                    Log.Comment("ScrollView.Unloaded event handler");
                    scrollViewUnloadedEvent.Set();
                };
            }

            Grid parentGrid = null;

            if (useParentGrid)
            {
                parentGrid        = new Grid();
                parentGrid.Width  = c_defaultUIScrollViewWidth * 3;
                parentGrid.Height = c_defaultUIScrollViewHeight * 3;

                scrollView.HorizontalAlignment = HorizontalAlignment.Left;
                scrollView.VerticalAlignment   = VerticalAlignment.Top;

                parentGrid.Children.Add(scrollView);
            }

            if (setAsContentRoot)
            {
                Log.Comment("Setting window content");
                if (useParentGrid)
                {
                    Content = parentGrid;
                }
                else
                {
                    Content = scrollView;
                }
            }
        }
        private void CmbShowScrollView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (this.scrollView11 != null)
            {
                if (cmbShowScrollView.SelectedIndex == 0)
                {
                    this.scrollView11.Visibility = Visibility.Visible;
                    this.scrollView21.Visibility = Visibility.Visible;
                    this.scrollView31.Visibility = Visibility.Visible;
                    this.scrollView41.Visibility = Visibility.Visible;
                    this.scrollView51.Visibility = Visibility.Visible;
                    this.scrollView12.Visibility = Visibility.Visible;
                    this.scrollView22.Visibility = Visibility.Visible;
                    this.scrollView32.Visibility = Visibility.Visible;
                    this.scrollView42.Visibility = Visibility.Visible;
                    this.scrollView52.Visibility = Visibility.Visible;

                    this.scrollView11.Width  = double.NaN;
                    this.scrollView21.Width  = double.NaN;
                    this.scrollView31.Width  = double.NaN;
                    this.scrollView41.Width  = double.NaN;
                    this.scrollView51.Width  = double.NaN;
                    this.scrollView12.Width  = double.NaN;
                    this.scrollView22.Width  = double.NaN;
                    this.scrollView32.Width  = double.NaN;
                    this.scrollView42.Width  = double.NaN;
                    this.scrollView52.Width  = double.NaN;
                    this.scrollView11.Height = double.NaN;
                    this.scrollView21.Height = double.NaN;
                    this.scrollView31.Height = double.NaN;
                    this.scrollView41.Height = double.NaN;
                    this.scrollView51.Height = double.NaN;
                    this.scrollView12.Height = double.NaN;
                    this.scrollView22.Height = double.NaN;
                    this.scrollView32.Height = double.NaN;
                    this.scrollView42.Height = double.NaN;
                    this.scrollView52.Height = double.NaN;

                    for (int rowIndex = 2; rowIndex < 4; rowIndex++)
                    {
                        this.rootGrid.RowDefinitions[rowIndex].Height = new GridLength(1, GridUnitType.Star);
                    }

                    for (int columnIndex = 0; columnIndex < 5; columnIndex++)
                    {
                        this.rootGrid.ColumnDefinitions[columnIndex].Width = new GridLength(1, GridUnitType.Star);
                    }

                    cmbIgnoredInputKind.IsEnabled     = false;
                    cmbIgnoredInputKind.SelectedIndex = 0;
                }
                else
                {
                    this.scrollView11.Visibility = Visibility.Collapsed;
                    this.scrollView21.Visibility = Visibility.Collapsed;
                    this.scrollView31.Visibility = Visibility.Collapsed;
                    this.scrollView41.Visibility = Visibility.Collapsed;
                    this.scrollView51.Visibility = Visibility.Collapsed;
                    this.scrollView12.Visibility = Visibility.Collapsed;
                    this.scrollView22.Visibility = Visibility.Collapsed;
                    this.scrollView32.Visibility = Visibility.Collapsed;
                    this.scrollView42.Visibility = Visibility.Collapsed;
                    this.scrollView52.Visibility = Visibility.Collapsed;

                    for (int rowIndex = 2; rowIndex < 4; rowIndex++)
                    {
                        this.rootGrid.RowDefinitions[rowIndex].Height = GridLength.Auto;
                    }

                    for (int columnIndex = 0; columnIndex < 5; columnIndex++)
                    {
                        this.rootGrid.ColumnDefinitions[columnIndex].Width = GridLength.Auto;
                    }

                    cmbIgnoredInputKind.IsEnabled = true;

                    ScrollView scrollView = SelectedScrollView;

                    scrollView.Visibility = Visibility.Visible;
                    scrollView.Width      = 300;
                    scrollView.Height     = 400;

                    txtScrollPresenterHorizontalOffset.Text = scrollView.HorizontalOffset.ToString();
                    txtScrollPresenterVerticalOffset.Text   = scrollView.VerticalOffset.ToString();
                    txtScrollPresenterZoomFactor.Text       = scrollView.ZoomFactor.ToString();

                    switch (scrollView.IgnoredInputKind)
                    {
                    case InputKind.None:
                        cmbIgnoredInputKind.SelectedIndex = 1;
                        break;

                    case InputKind.Touch:
                        cmbIgnoredInputKind.SelectedIndex = 2;
                        break;

                    case InputKind.Pen:
                        cmbIgnoredInputKind.SelectedIndex = 3;
                        break;

                    case InputKind.MouseWheel:
                        cmbIgnoredInputKind.SelectedIndex = 4;
                        break;

                    case InputKind.Keyboard:
                        cmbIgnoredInputKind.SelectedIndex = 5;
                        break;

                    case InputKind.Gamepad:
                        cmbIgnoredInputKind.SelectedIndex = 6;
                        break;

                    case InputKind.All:
                        cmbIgnoredInputKind.SelectedIndex = 7;
                        break;

                    default:
                        cmbIgnoredInputKind.SelectedIndex = 0;
                        break;
                    }
                }
            }
        }