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 scroller = new Scroller(); objects["Scroller"] = new WeakReference(scroller); if (PlatformConfiguration.IsOsVersionGreaterThanOrEqual(OSVersion.Redstone2)) { var scrollViewer = new ScrollViewer(); objects["ScrollViewer"] = new WeakReference(scrollViewer); } }); IdleSynchronizer.Wait(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); RunOnUIThread.Execute(() => CheckLeaks(objects)); }
private void UseScrollViewer(ScrollViewer sv2) { if (scrollViewer == sv2 || sv2 == null) { return; } try { if (scrollViewer == null && (chkLogScrollViewerMessages.IsChecked == true || chkLogScrollerMessages.IsChecked == true)) { MUXControlsTestHooks.LoggingMessage += MUXControlsTestHooks_LoggingMessage; if (chkLogScrollerMessages.IsChecked == true) { MUXControlsTestHooks.SetLoggingLevelForType("Scroller", isLoggingInfoLevel: true, isLoggingVerboseLevel: true); } if (chkLogScrollViewerMessages.IsChecked == true) { MUXControlsTestHooks.SetLoggingLevelForType("ScrollViewer", isLoggingInfoLevel: true, isLoggingVerboseLevel: true); } } scrollViewer = sv2; UpdateIsChildAvailableWidthConstrained(); UpdateIsChildAvailableHeightConstrained(); UpdateHorizontalScrollMode(); UpdateVerticalScrollMode(); UpdateZoomMode(); UpdateWidth(); UpdateHeight(); UpdatePadding(); UpdateHorizontalScrollBarVisibility(); UpdateVerticalScrollBarVisibility(); chkIsEnabled.IsChecked = scrollViewer.IsEnabled; chkIsTabStop.IsChecked = scrollViewer.IsTabStop; UpdateContentWidth(); UpdateContentHeight(); UpdateContentMargin(); Control contentAsC = scrollViewer.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()); } }
public void VerifyPropertyValuesAfterTemplateApplication() { if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.Redstone2)) { Log.Warning("Test is disabled on pre-RS2 because ScrollViewer not supported pre-RS2"); return; } using (PrivateLoggingHelper privateSVLoggingHelper = new PrivateLoggingHelper("ScrollViewer", "Scroller")) { ScrollViewer scrollViewer = null; Rectangle rectangleScrollViewerContent = null; AutoResetEvent scrollViewerLoadedEvent = new AutoResetEvent(false); AutoResetEvent scrollViewerUnloadedEvent = new AutoResetEvent(false); RunOnUIThread.Execute(() => { rectangleScrollViewerContent = new Rectangle(); scrollViewer = new ScrollViewer(); SetupDefaultUI(scrollViewer, rectangleScrollViewerContent, scrollViewerLoadedEvent, scrollViewerUnloadedEvent); }); WaitForEvent("Waiting for Loaded event", scrollViewerLoadedEvent); RunOnUIThread.Execute(() => { Log.Comment("Verifying ScrollViewer property values after Loaded event"); Verify.AreEqual(scrollViewer.Content, rectangleScrollViewerContent); Verify.IsNotNull(ScrollViewerTestHooks.GetScrollerPart(scrollViewer)); Verify.AreEqual(ScrollViewerTestHooks.GetScrollerPart(scrollViewer).Content, rectangleScrollViewerContent); Verify.IsNotNull(scrollViewer.HorizontalScrollController); Verify.IsNotNull(scrollViewer.VerticalScrollController); Verify.AreEqual(scrollViewer.ExtentWidth, c_defaultUIScrollViewerContentWidth); Verify.AreEqual(scrollViewer.ExtentHeight, c_defaultUIScrollViewerContentHeight); Verify.AreEqual(scrollViewer.ViewportWidth, c_defaultUIScrollViewerWidth); Verify.AreEqual(scrollViewer.ViewportHeight, c_defaultUIScrollViewerHeight); Verify.AreEqual(scrollViewer.ScrollableWidth, c_defaultUIScrollViewerContentWidth - c_defaultUIScrollViewerWidth); Verify.AreEqual(scrollViewer.ScrollableHeight, c_defaultUIScrollViewerContentHeight - c_defaultUIScrollViewerHeight); Log.Comment("Resetting window content and ScrollViewer"); MUXControlsTestApp.App.TestContentRoot = null; scrollViewer = null; }); WaitForEvent("Waiting for Unloaded event", scrollViewerUnloadedEvent); IdleSynchronizer.Wait(); Log.Comment("Garbage collecting..."); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); Log.Comment("Done"); } }
public void VerifyDefaultPropertyValues() { if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.Redstone2)) { Log.Warning("Test is disabled on pre-RS2 because ScrollViewer not supported pre-RS2"); return; } RunOnUIThread.Execute(() => { ScrollViewer scrollViewer = new ScrollViewer(); Verify.IsNotNull(scrollViewer); Log.Comment("Verifying ScrollViewer default property values"); Verify.IsNull(scrollViewer.Content); Verify.IsNull(ScrollViewerTestHooks.GetScrollerPart(scrollViewer)); Verify.IsNull(scrollViewer.HorizontalScrollController); Verify.IsNull(scrollViewer.VerticalScrollController); #if USE_SCROLLMODE_AUTO Verify.AreEqual(scrollViewer.ComputedHorizontalScrollMode, c_defaultComputedHorizontalScrollMode); Verify.AreEqual(scrollViewer.ComputedVerticalScrollMode, c_defaultComputedVerticalScrollMode); #endif Verify.AreEqual(scrollViewer.InputKind, c_defaultInputKind); Verify.AreEqual(scrollViewer.ContentOrientation, c_defaultContentOrientation); Verify.AreEqual(scrollViewer.HorizontalScrollChainingMode, c_defaultHorizontalScrollChainingMode); Verify.AreEqual(scrollViewer.VerticalScrollChainingMode, c_defaultVerticalScrollChainingMode); Verify.AreEqual(scrollViewer.HorizontalScrollRailingMode, c_defaultHorizontalScrollRailingMode); Verify.AreEqual(scrollViewer.VerticalScrollRailingMode, c_defaultVerticalScrollRailingMode); Verify.AreEqual(scrollViewer.HorizontalScrollMode, c_defaultHorizontalScrollMode); Verify.AreEqual(scrollViewer.VerticalScrollMode, c_defaultVerticalScrollMode); Verify.AreEqual(scrollViewer.ZoomMode, c_defaultZoomMode); Verify.AreEqual(scrollViewer.ZoomChainingMode, c_defaultZoomChainingMode); Verify.IsGreaterThan(scrollViewer.MinZoomFactor, c_defaultMinZoomFactor - c_epsilon); Verify.IsLessThan(scrollViewer.MinZoomFactor, c_defaultMinZoomFactor + c_epsilon); Verify.IsGreaterThan(scrollViewer.MaxZoomFactor, c_defaultMaxZoomFactor - c_epsilon); Verify.IsLessThan(scrollViewer.MaxZoomFactor, c_defaultMaxZoomFactor + c_epsilon); Verify.AreEqual(scrollViewer.HorizontalAnchorRatio, c_defaultAnchorRatio); Verify.AreEqual(scrollViewer.VerticalAnchorRatio, c_defaultAnchorRatio); Verify.AreEqual(scrollViewer.IsAnchoredAtHorizontalExtent, c_defaultIsAnchoredAtExtent); Verify.AreEqual(scrollViewer.IsAnchoredAtVerticalExtent, c_defaultIsAnchoredAtExtent); Verify.AreEqual(scrollViewer.ExtentWidth, 0.0); Verify.AreEqual(scrollViewer.ExtentHeight, 0.0); Verify.AreEqual(scrollViewer.ViewportWidth, 0.0); Verify.AreEqual(scrollViewer.ViewportHeight, 0.0); Verify.AreEqual(scrollViewer.ScrollableWidth, 0.0); Verify.AreEqual(scrollViewer.ScrollableHeight, 0.0); }); }
private void ResetView(ScrollViewer scrollViewer) { Scroller scroller = ScrollViewerTestHooks.GetScrollerPart(scrollViewer); string scrollerId = (VisualTreeHelper.GetParent(scroller) as FrameworkElement).Name + "." + scroller.Name; int viewChangeId = scroller.ChangeOffsets(new ScrollerChangeOffsetsOptions(0.0, 0.0, ScrollerViewKind.Absolute, ScrollerViewChangeKind.DisableAnimation, ScrollerViewChangeSnapPointRespect.IgnoreSnapPoints)); this.fullLogs.Add(scrollerId + " ChangeOffsets requested. Id=" + viewChangeId); viewChangeId = scroller.ChangeZoomFactor(new ScrollerChangeZoomFactorOptions(1.0f, ScrollerViewKind.Absolute, System.Numerics.Vector2.Zero, ScrollerViewChangeKind.DisableAnimation, ScrollerViewChangeSnapPointRespect.IgnoreSnapPoints)); this.fullLogs.Add(scrollerId + " ChangeZoomFactor requested. Id=" + viewChangeId); if (scrollViewer == this.scrollViewer52) { scrollViewer52ZoomFactorChangeId = viewChangeId; } }
private void ResetView(ScrollViewer scrollViewer) { Scroller scroller = ScrollViewerTestHooks.GetScrollerPart(scrollViewer); string scrollerId = (VisualTreeHelper.GetParent(scroller) as FrameworkElement).Name + "." + scroller.Name; int viewChangeId = scroller.ScrollTo(0.0, 0.0, new ScrollOptions(AnimationMode.Disabled, SnapPointsMode.Ignore)).OffsetsChangeId; this.fullLogs.Add(scrollerId + " ScrollTo requested. Id=" + viewChangeId); viewChangeId = scroller.ZoomTo(1.0f, System.Numerics.Vector2.Zero, new ZoomOptions(AnimationMode.Disabled, SnapPointsMode.Ignore)).ZoomFactorChangeId; this.fullLogs.Add(scrollerId + " ZoomTo requested. Id=" + viewChangeId); if (scrollViewer == this.scrollViewer52) { scrollViewer52ZoomFactorChangeId = viewChangeId; } }
private void CmbIgnoredInputKind_SelectionChanged(object sender, SelectionChangedEventArgs e) { InputKind ignoredInputKind; ScrollViewer scrollViewer = SelectedScrollViewer; 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; } scrollViewer.IgnoredInputKind = ignoredInputKind; }
private void ScrollViewer_ExtentChanged(ScrollViewer sender, object args) { AppendAsyncEventMessage($"ScrollViewer.ExtentChanged ExtentWidth={sender.ExtentWidth}, ExtentHeight={sender.ExtentHeight}"); }
private void CmbShowScrollViewer_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (this.scrollViewer11 != null) { if (cmbShowScrollViewer.SelectedIndex == 0) { this.scrollViewer11.Visibility = Visibility.Visible; this.scrollViewer21.Visibility = Visibility.Visible; this.scrollViewer31.Visibility = Visibility.Visible; this.scrollViewer41.Visibility = Visibility.Visible; this.scrollViewer51.Visibility = Visibility.Visible; this.scrollViewer12.Visibility = Visibility.Visible; this.scrollViewer22.Visibility = Visibility.Visible; this.scrollViewer32.Visibility = Visibility.Visible; this.scrollViewer42.Visibility = Visibility.Visible; this.scrollViewer52.Visibility = Visibility.Visible; this.scrollViewer11.Width = double.NaN; this.scrollViewer21.Width = double.NaN; this.scrollViewer31.Width = double.NaN; this.scrollViewer41.Width = double.NaN; this.scrollViewer51.Width = double.NaN; this.scrollViewer12.Width = double.NaN; this.scrollViewer22.Width = double.NaN; this.scrollViewer32.Width = double.NaN; this.scrollViewer42.Width = double.NaN; this.scrollViewer52.Width = double.NaN; this.scrollViewer11.Height = double.NaN; this.scrollViewer21.Height = double.NaN; this.scrollViewer31.Height = double.NaN; this.scrollViewer41.Height = double.NaN; this.scrollViewer51.Height = double.NaN; this.scrollViewer12.Height = double.NaN; this.scrollViewer22.Height = double.NaN; this.scrollViewer32.Height = double.NaN; this.scrollViewer42.Height = double.NaN; this.scrollViewer52.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); } } else { this.scrollViewer11.Visibility = Visibility.Collapsed; this.scrollViewer21.Visibility = Visibility.Collapsed; this.scrollViewer31.Visibility = Visibility.Collapsed; this.scrollViewer41.Visibility = Visibility.Collapsed; this.scrollViewer51.Visibility = Visibility.Collapsed; this.scrollViewer12.Visibility = Visibility.Collapsed; this.scrollViewer22.Visibility = Visibility.Collapsed; this.scrollViewer32.Visibility = Visibility.Collapsed; this.scrollViewer42.Visibility = Visibility.Collapsed; this.scrollViewer52.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; } ScrollViewer scrollViewer = null; switch (cmbShowScrollViewer.SelectedIndex) { case 1: scrollViewer = this.scrollViewer11; break; case 2: scrollViewer = this.scrollViewer21; break; case 3: scrollViewer = this.scrollViewer31; break; case 4: scrollViewer = this.scrollViewer41; break; case 5: scrollViewer = this.scrollViewer51; break; case 6: scrollViewer = this.scrollViewer12; break; case 7: scrollViewer = this.scrollViewer22; break; case 8: scrollViewer = this.scrollViewer32; break; case 9: scrollViewer = this.scrollViewer42; break; case 10: scrollViewer = this.scrollViewer52; break; } scrollViewer.Visibility = Visibility.Visible; scrollViewer.Width = 300; scrollViewer.Height = 400; txtScrollerHorizontalOffset.Text = scrollViewer.HorizontalOffset.ToString(); txtScrollerVerticalOffset.Text = scrollViewer.VerticalOffset.ToString(); txtScrollerZoomFactor.Text = scrollViewer.ZoomFactor.ToString(); } } }
private void ScrollViewer_ZoomCompleted(ScrollViewer sender, ZoomCompletedEventArgs args) { AppendAsyncEventMessage($"ScrollViewer.ZoomCompleted ZoomFactorChangeId={args.ZoomInfo.ZoomFactorChangeId}"); }
private void ScrollViewer_ScrollCompleted(ScrollViewer sender, ScrollCompletedEventArgs args) { AppendAsyncEventMessage($"ScrollViewer.ScrollCompleted OffsetsChangeId={args.ScrollInfo.OffsetsChangeId}"); }
private void ScrollViewer_ZoomAnimationStarting(ScrollViewer sender, ZoomAnimationStartingEventArgs args) { AppendAsyncEventMessage($"ScrollViewer.ZoomAnimationStarting ZoomFactorChangeId={args.ZoomInfo.ZoomFactorChangeId}, CenterPoint={args.CenterPoint}"); }
private void ScrollViewer_ScrollAnimationStarting(ScrollViewer sender, ScrollAnimationStartingEventArgs args) { AppendAsyncEventMessage($"ScrollViewer.ScrollAnimationStarting OffsetsChangeId={args.ScrollInfo.OffsetsChangeId}"); }
private void ScrollViewer_ViewChanged(ScrollViewer sender, object args) { AppendAsyncEventMessage($"ScrollViewer.ViewChanged HorizontalOffset={sender.HorizontalOffset.ToString()}, VerticalOffset={sender.VerticalOffset}, ZoomFactor={sender.ZoomFactor}"); }
private void ScrollViewer_StateChanged(ScrollViewer sender, object args) { AppendAsyncEventMessage($"ScrollViewer.StateChanged {sender.State.ToString()}"); }
private void VerifyVisualStates(ScrollBarVisibility scrollBarVisibility, bool autoHideScrollControllers) { using (PrivateLoggingHelper privateSVLoggingHelper = new PrivateLoggingHelper("ScrollViewer")) { ScrollViewer scrollViewer = null; RunOnUIThread.Execute(() => { MUXControlsTestHooks.LoggingMessage += MUXControlsTestHooks_LoggingMessageForVisualStateChange; m_scrollViewerVisualStateCounts = new ScrollViewerVisualStateCounts(); scrollViewer = new ScrollViewer(); }); using (ScrollViewerTestHooksHelper scrollViewerTestHooksHelper = new ScrollViewerTestHooksHelper(scrollViewer, autoHideScrollControllers)) { Rectangle rectangleScrollViewerContent = null; AutoResetEvent scrollViewerLoadedEvent = new AutoResetEvent(false); AutoResetEvent scrollViewerUnloadedEvent = new AutoResetEvent(false); RunOnUIThread.Execute(() => { rectangleScrollViewerContent = new Rectangle(); scrollViewer.HorizontalScrollBarVisibility = scrollBarVisibility; scrollViewer.VerticalScrollBarVisibility = scrollBarVisibility; SetupDefaultUI( scrollViewer: scrollViewer, rectangleScrollViewerContent: rectangleScrollViewerContent, scrollViewerLoadedEvent: scrollViewerLoadedEvent, scrollViewerUnloadedEvent: scrollViewerUnloadedEvent, setAsContentRoot: true, useParentGrid: true); }); WaitForEvent("Waiting for Loaded event", scrollViewerLoadedEvent); 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_scrollViewerVisualStateCounts.ResetStateCounts(); MUXControlsTestHooks.LoggingMessage += MUXControlsTestHooks_LoggingMessageForVisualStateChange; Log.Comment("Disabling ScrollViewer"); scrollViewer.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_scrollViewerVisualStateCounts.ResetStateCounts(); MUXControlsTestHooks.LoggingMessage += MUXControlsTestHooks_LoggingMessageForVisualStateChange; Log.Comment("Enabling ScrollViewer"); scrollViewer.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"); MUXControlsTestApp.App.TestContentRoot = null; m_scrollViewerVisualStateCounts = null; }); WaitForEvent("Waiting for Unloaded event", scrollViewerUnloadedEvent); } } }
public void VerifyScrollerAttachedProperties() { if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.Redstone2)) { Log.Warning("Test is disabled on pre-RS2 because ScrollViewer not supported pre-RS2"); return; } using (PrivateLoggingHelper privateSVLoggingHelper = new PrivateLoggingHelper("ScrollViewer", "Scroller")) { ScrollViewer scrollViewer = null; Rectangle rectangleScrollViewerContent = null; AutoResetEvent scrollViewerLoadedEvent = new AutoResetEvent(false); AutoResetEvent scrollViewerUnloadedEvent = new AutoResetEvent(false); RunOnUIThread.Execute(() => { rectangleScrollViewerContent = new Rectangle(); scrollViewer = new ScrollViewer(); SetupDefaultUI(scrollViewer, rectangleScrollViewerContent, scrollViewerLoadedEvent, scrollViewerUnloadedEvent); }); WaitForEvent("Waiting for Loaded event", scrollViewerLoadedEvent); RunOnUIThread.Execute(() => { Log.Comment("Setting Scroller-cloned properties to non-default values"); scrollViewer.InputKind = InputKind.MouseWheel | InputKind.Pen; scrollViewer.IsChildAvailableWidthConstrained = !c_defaultIsChildAvailableWidthConstrained; scrollViewer.IsChildAvailableHeightConstrained = !c_defaultIsChildAvailableHeightConstrained; scrollViewer.HorizontalScrollChainingMode = ChainingMode.Always; scrollViewer.VerticalScrollChainingMode = ChainingMode.Never; scrollViewer.HorizontalScrollRailingMode = RailingMode.Disabled; scrollViewer.VerticalScrollRailingMode = RailingMode.Disabled; scrollViewer.HorizontalScrollMode = ScrollMode.Enabled; scrollViewer.VerticalScrollMode = ScrollMode.Disabled; scrollViewer.ZoomMode = ZoomMode.Enabled; scrollViewer.ZoomChainingMode = ChainingMode.Never; scrollViewer.MinZoomFactor = 2.0; scrollViewer.MaxZoomFactor = 8.0; Log.Comment("Verifying Scroller-cloned non-default properties"); Verify.AreEqual(scrollViewer.InputKind, InputKind.MouseWheel | InputKind.Pen); Verify.AreEqual(scrollViewer.IsChildAvailableWidthConstrained, !c_defaultIsChildAvailableWidthConstrained); Verify.AreEqual(scrollViewer.IsChildAvailableHeightConstrained, !c_defaultIsChildAvailableHeightConstrained); Verify.AreEqual(scrollViewer.HorizontalScrollChainingMode, ChainingMode.Always); Verify.AreEqual(scrollViewer.VerticalScrollChainingMode, ChainingMode.Never); Verify.AreEqual(scrollViewer.HorizontalScrollRailingMode, RailingMode.Disabled); Verify.AreEqual(scrollViewer.VerticalScrollRailingMode, RailingMode.Disabled); Verify.AreEqual(scrollViewer.HorizontalScrollMode, ScrollMode.Enabled); Verify.AreEqual(scrollViewer.VerticalScrollMode, ScrollMode.Disabled); Verify.AreEqual(scrollViewer.ComputedHorizontalScrollMode, ScrollMode.Enabled); Verify.AreEqual(scrollViewer.ComputedVerticalScrollMode, ScrollMode.Disabled); Verify.AreEqual(scrollViewer.ZoomMode, ZoomMode.Enabled); Verify.AreEqual(scrollViewer.ZoomChainingMode, ChainingMode.Never); Verify.IsGreaterThan(scrollViewer.MinZoomFactor, 2.0 - c_epsilon); Verify.IsLessThan(scrollViewer.MinZoomFactor, 2.0 + c_epsilon); Verify.IsGreaterThan(scrollViewer.MaxZoomFactor, 8.0 - c_epsilon); Verify.IsLessThan(scrollViewer.MaxZoomFactor, 8.0 + c_epsilon); Log.Comment("Resetting window content and ScrollViewer"); MUXControlsTestApp.App.TestContentRoot = null; scrollViewer = null; }); WaitForEvent("Waiting for Unloaded event", scrollViewerUnloadedEvent); IdleSynchronizer.Wait(); Log.Comment("Garbage collecting..."); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); Log.Comment("Done"); } }
private void CmbShowScrollViewer_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (this.scrollViewer11 != null) { if (cmbShowScrollViewer.SelectedIndex == 0) { this.scrollViewer11.Visibility = Visibility.Visible; this.scrollViewer21.Visibility = Visibility.Visible; this.scrollViewer31.Visibility = Visibility.Visible; this.scrollViewer41.Visibility = Visibility.Visible; this.scrollViewer51.Visibility = Visibility.Visible; this.scrollViewer12.Visibility = Visibility.Visible; this.scrollViewer22.Visibility = Visibility.Visible; this.scrollViewer32.Visibility = Visibility.Visible; this.scrollViewer42.Visibility = Visibility.Visible; this.scrollViewer52.Visibility = Visibility.Visible; this.scrollViewer11.Width = double.NaN; this.scrollViewer21.Width = double.NaN; this.scrollViewer31.Width = double.NaN; this.scrollViewer41.Width = double.NaN; this.scrollViewer51.Width = double.NaN; this.scrollViewer12.Width = double.NaN; this.scrollViewer22.Width = double.NaN; this.scrollViewer32.Width = double.NaN; this.scrollViewer42.Width = double.NaN; this.scrollViewer52.Width = double.NaN; this.scrollViewer11.Height = double.NaN; this.scrollViewer21.Height = double.NaN; this.scrollViewer31.Height = double.NaN; this.scrollViewer41.Height = double.NaN; this.scrollViewer51.Height = double.NaN; this.scrollViewer12.Height = double.NaN; this.scrollViewer22.Height = double.NaN; this.scrollViewer32.Height = double.NaN; this.scrollViewer42.Height = double.NaN; this.scrollViewer52.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.scrollViewer11.Visibility = Visibility.Collapsed; this.scrollViewer21.Visibility = Visibility.Collapsed; this.scrollViewer31.Visibility = Visibility.Collapsed; this.scrollViewer41.Visibility = Visibility.Collapsed; this.scrollViewer51.Visibility = Visibility.Collapsed; this.scrollViewer12.Visibility = Visibility.Collapsed; this.scrollViewer22.Visibility = Visibility.Collapsed; this.scrollViewer32.Visibility = Visibility.Collapsed; this.scrollViewer42.Visibility = Visibility.Collapsed; this.scrollViewer52.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; ScrollViewer scrollViewer = SelectedScrollViewer; scrollViewer.Visibility = Visibility.Visible; scrollViewer.Width = 300; scrollViewer.Height = 400; txtScrollerHorizontalOffset.Text = scrollViewer.HorizontalOffset.ToString(); txtScrollerVerticalOffset.Text = scrollViewer.VerticalOffset.ToString(); txtScrollerZoomFactor.Text = scrollViewer.ZoomFactor.ToString(); switch (scrollViewer.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; } } } }
public void VerifyAnchorCandidateRegistration() { if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.Redstone2)) { Log.Warning("Test is disabled on pre-RS2 because ScrollViewer not supported pre-RS2"); return; } using (PrivateLoggingHelper privateSVLoggingHelper = new PrivateLoggingHelper("ScrollViewer", "Scroller")) { int expectedAnchorCandidatesCount = 0; Scroller scroller = null; ScrollViewer scrollViewer = null; Rectangle rectangleScrollViewerContent = null; AutoResetEvent scrollViewerLoadedEvent = new AutoResetEvent(false); AutoResetEvent scrollViewerAnchorRequestedEvent = new AutoResetEvent(false); RunOnUIThread.Execute(() => { rectangleScrollViewerContent = new Rectangle(); scrollViewer = new ScrollViewer(); scrollViewer.HorizontalAnchorRatio = 0.1; SetupDefaultUI(scrollViewer, rectangleScrollViewerContent, scrollViewerLoadedEvent); scrollViewer.AnchorRequested += (ScrollViewer sender, ScrollerAnchorRequestedEventArgs args) => { Log.Comment("ScrollViewer.AnchorRequested event handler. args.AnchorCandidates.Count: " + args.AnchorCandidates.Count); Verify.IsNull(args.AnchorElement); Verify.AreEqual(expectedAnchorCandidatesCount, args.AnchorCandidates.Count); scrollViewerAnchorRequestedEvent.Set(); }; }); WaitForEvent("Waiting for Loaded event", scrollViewerLoadedEvent); RunOnUIThread.Execute(() => { Log.Comment("Accessing inner Scroller control"); scroller = ScrollViewerTestHooks.GetScrollerPart(scrollViewer); Log.Comment("Registering Rectangle as anchor candidate"); scrollViewer.RegisterAnchorCandidate(rectangleScrollViewerContent); expectedAnchorCandidatesCount = 1; Log.Comment("Forcing Scroller layout"); scroller.InvalidateArrange(); }); WaitForEvent("Waiting for AnchorRequested event", scrollViewerAnchorRequestedEvent); RunOnUIThread.Execute(() => { Log.Comment("Unregistering Rectangle as anchor candidate"); scrollViewer.UnregisterAnchorCandidate(rectangleScrollViewerContent); expectedAnchorCandidatesCount = 0; Log.Comment("Forcing Scroller layout"); scroller.InvalidateArrange(); }); WaitForEvent("Waiting for AnchorRequested event", scrollViewerAnchorRequestedEvent); } }
private void SetupDefaultUI( ScrollViewer scrollViewer, Rectangle rectangleScrollViewerContent = null, AutoResetEvent scrollViewerLoadedEvent = null, AutoResetEvent scrollViewerUnloadedEvent = null, bool setAsContentRoot = true) { Log.Comment("Setting up default UI with ScrollViewer" + (rectangleScrollViewerContent == 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 (rectangleScrollViewerContent != null) { rectangleScrollViewerContent.Width = c_defaultUIScrollViewerContentWidth; rectangleScrollViewerContent.Height = c_defaultUIScrollViewerContentHeight; rectangleScrollViewerContent.Fill = twoColorLGB; } Verify.IsNotNull(scrollViewer); scrollViewer.Name = "scrollViewer"; scrollViewer.Width = c_defaultUIScrollViewerWidth; scrollViewer.Height = c_defaultUIScrollViewerHeight; if (rectangleScrollViewerContent != null) { scrollViewer.Content = rectangleScrollViewerContent; } if (scrollViewerLoadedEvent != null) { scrollViewer.Loaded += (object sender, RoutedEventArgs e) => { Log.Comment("Scroller.Loaded event handler"); scrollViewerLoadedEvent.Set(); }; } if (scrollViewerUnloadedEvent != null) { scrollViewer.Unloaded += (object sender, RoutedEventArgs e) => { Log.Comment("Scroller.Unloaded event handler"); scrollViewerUnloadedEvent.Set(); }; } if (setAsContentRoot) { Log.Comment("Setting window content"); MUXControlsTestApp.App.TestContentRoot = scrollViewer; } }
private void SetupDefaultUI( ScrollViewer scrollViewer, Rectangle rectangleScrollViewerContent = null, AutoResetEvent scrollViewerLoadedEvent = null, AutoResetEvent scrollViewerUnloadedEvent = null, bool setAsContentRoot = true, bool useParentGrid = false) { Log.Comment("Setting up default UI with ScrollViewer" + (rectangleScrollViewerContent == 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 (rectangleScrollViewerContent != null) { rectangleScrollViewerContent.Width = c_defaultUIScrollViewerContentWidth; rectangleScrollViewerContent.Height = c_defaultUIScrollViewerContentHeight; rectangleScrollViewerContent.Fill = twoColorLGB; } Verify.IsNotNull(scrollViewer); scrollViewer.Name = "scrollViewer"; scrollViewer.Width = c_defaultUIScrollViewerWidth; scrollViewer.Height = c_defaultUIScrollViewerHeight; if (rectangleScrollViewerContent != null) { scrollViewer.Content = rectangleScrollViewerContent; } if (scrollViewerLoadedEvent != null) { scrollViewer.Loaded += (object sender, RoutedEventArgs e) => { Log.Comment("ScrollViewer.Loaded event handler"); scrollViewerLoadedEvent.Set(); }; } if (scrollViewerUnloadedEvent != null) { scrollViewer.Unloaded += (object sender, RoutedEventArgs e) => { Log.Comment("ScrollViewer.Unloaded event handler"); scrollViewerUnloadedEvent.Set(); }; } Grid parentGrid = null; if (useParentGrid) { parentGrid = new Grid(); parentGrid.Width = c_defaultUIScrollViewerWidth * 3; parentGrid.Height = c_defaultUIScrollViewerHeight * 3; scrollViewer.HorizontalAlignment = HorizontalAlignment.Left; scrollViewer.VerticalAlignment = VerticalAlignment.Top; parentGrid.Children.Add(scrollViewer); } if (setAsContentRoot) { Log.Comment("Setting window content"); if (useParentGrid) { Content = parentGrid; } else { Content = scrollViewer; } } }