private void Scroller_ViewChanged(Scroller sender, object args) { this.txtScrollerHorizontalOffset.Text = sender.HorizontalOffset.ToString(); this.txtScrollerVerticalOffset.Text = sender.VerticalOffset.ToString(); this.txtScrollerZoomFactor.Text = sender.ZoomFactor.ToString(); this.fullLogs.Add(sender.Name + " ViewChanged H=" + this.txtScrollerHorizontalOffset.Text + ", V=" + this.txtScrollerVerticalOffset.Text + ", S=" + this.txtScrollerZoomFactor.Text); }
private void Scroller_StateChanged(Scroller sender, object args) { if (chkLogScrollerEvents.IsChecked == true) { AppendAsyncEventMessage("StateChanged " + sender.State.ToString()); } }
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 scrollerView = new ScrollerView(); objects["ScrollerView"] = new WeakReference(scrollerView); } }); IdleSynchronizer.Wait(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); RunOnUIThread.Execute(() => CheckLeaks(objects)); }
public EventCycleTest(bool addToTree = true) { _rating = new RatingControl(); _rating.ValueChanged += OnRatingValueChanged; if (addToTree) { Children.Add(_rating); } _colorPicker = new ColorPicker(); _colorPicker.ColorChanged += OnColorPickerColorChanged; if (addToTree) { Children.Add(_colorPicker); } _navigationView = new NavigationView(); _navigationView.SelectionChanged += OnNavigationViewSelectionChanged; if (addToTree) { Children.Add(_navigationView); } var item = new NavigationViewItem(); _navigationView.MenuItems.Add(item); _scroller = new Scroller(); _scroller.ViewChanged += OnScrollerViewChanged; if (addToTree) { Children.Add(_scroller); } }
private void Scroller_ExtentChanged(Scroller sender, object args) { if (chkLogScrollerEvents.IsChecked == true) { AppendAsyncEventMessage("ExtentChanged ExtentWidth=" + sender.ExtentWidth.ToString() + ", ExtentHeight=" + sender.ExtentHeight.ToString()); } }
private void Scroller_BringingIntoView(Scroller sender, ScrollerBringingIntoViewEventArgs args) { string asyncEventMessage = "BringingIntoView Scroller=" + sender.Name; asyncEventMessage += ", TargetHorizontalOffset=" + args.TargetHorizontalOffset + ", TargetVerticalOffset=" + args.TargetVerticalOffset; asyncEventMessage += ", ViewChangeId=" + args.ViewChangeId; 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; } }
private void UnhookScrollerEvents(Scroller scroller) { scroller.ExtentChanged -= Scroller_ExtentChanged; scroller.StateChanged -= Scroller_StateChanged; scroller.ViewChanged -= Scroller_ViewChanged; scroller.ViewChangeCompleted -= Scroller_ViewChangeCompleted; }
private void CmbVerticalScrollController_SelectionChanged(object sender, Windows.UI.Xaml.Controls.SelectionChangedEventArgs e) { ComboBox cmbVerticalScrollController = sender as ComboBox; Scroller scroller = cmbVerticalScrollController == cmbVerticalScrollController1 ? scroller1 : scroller2; CompositionScrollController oldCompositionScrollController = scroller.VerticalScrollController as CompositionScrollController; switch (cmbVerticalScrollController.SelectedIndex) { case 0: if (scroller.VerticalScrollController != null) { scroller.VerticalScrollController = null; LogMessage(scroller.Name + ".VerticalScrollController reset"); } break; case 1: scroller.VerticalScrollController = verticalCompositionScrollController; LogMessage(scroller.Name + ".VerticalScrollController set to verticalScrollController"); break; case 2: scroller.VerticalScrollController = horizontalCompositionScrollController; LogMessage(scroller.Name + ".VerticalScrollController set to horizontalScrollController"); break; } if (oldCompositionScrollController != null) { oldCompositionScrollController.IsEnabled = true; } }
private void Scroller_ViewChangeCompleted(Scroller sender, ScrollerViewChangeCompletedEventArgs args) { if (args.ViewChangeId == scroller3ZoomFactorChangeId) { this.txtResetStatus.Text = "Views reset"; } }
private void Scroller_ViewChangeCompleted(Scroller sender, ScrollerViewChangeCompletedEventArgs args) { if (chkLogScrollerEvents.IsChecked == true) { AppendAsyncEventMessage("ViewChangeCompleted ViewChangeId=" + args.ViewChangeId + ", Result=" + args.Result); } }
private void Scroller_AnchorRequested(Scroller sender, ScrollerAnchorRequestedEventArgs args) { try { IList <UIElement> anchorCandidates = args.AnchorCandidates; if (chkLogScrollerEvents.IsChecked == true) { AppendAsyncEventMessage("AnchorRequested anchor=" + (args.AnchorElement == null ? "null" : "non-null") + ", count=" + anchorCandidates.Count); } if (anchorElement == null) { foreach (UIElement child in stackPanel.Children) { anchorCandidates.Add(child); } } else { args.AnchorElement = anchorElement; } } catch (Exception ex) { cmbAnchorElement.SelectedIndex = 0; BtnSetAnchorElement_Click(null, null); txtExceptionReport.Text = ex.ToString(); lstScrollerEvents.Items.Add(ex.ToString()); } }
private void AnchoringAtAlmostFarEdge(Orientation orientation) { using (ScrollerTestHooksHelper scrollerTestHooksHelper = new ScrollerTestHooksHelper()) { Scroller scroller = null; AutoResetEvent scrollerLoadedEvent = new AutoResetEvent(false); RunOnUIThread.Execute(() => { scroller = new Scroller(); SetupDefaultAnchoringUI(orientation, scroller, scrollerLoadedEvent); }); WaitForEvent("Waiting for Loaded event", scrollerLoadedEvent); ChangeZoomFactor(scroller, 2.0f, 0.0f, 0.0f, ScrollerViewKind.Absolute, ScrollerViewChangeKind.DisableAnimation); double horizontalOffset = 0.0; double verticalOffset = 0.0; RunOnUIThread.Execute(() => { if (orientation == Orientation.Vertical) { verticalOffset = scroller.ExtentHeight * 2.0 - scroller.Height - 1.0; scroller.VerticalAnchorRatio = 1.0; } else { horizontalOffset = scroller.ExtentWidth * 2.0 - scroller.Width - 1.0; scroller.HorizontalAnchorRatio = 1.0; } }); ChangeOffsets(scroller, horizontalOffset, verticalOffset, ScrollerViewKind.Absolute, ScrollerViewChangeKind.DisableAnimation, ScrollerViewChangeSnapPointRespect.IgnoreSnapPoints, false /*hookViewChanged*/); RunOnUIThread.Execute(() => { Log.Comment("Inserting child at far edge"); InsertStackPanelChild((scroller.Child as Border).Child as StackPanel, 1 /*operationCount*/, c_defaultAnchoringUIStackPanelChildrenCount /*newIndex*/, 1 /*newCount*/); }); IdleSynchronizer.Wait(); RunOnUIThread.Execute(() => { Log.Comment("No Scroller offset change expected"); if (orientation == Orientation.Vertical) { Verify.AreEqual(scroller.VerticalOffset, verticalOffset); } else { Verify.AreEqual(scroller.HorizontalOffset, horizontalOffset); } }); } }
private void Scroller_ViewChanged(Scroller sender, object args) { string senderId = (VisualTreeHelper.GetParent(sender) as FrameworkElement).Name + "." + sender.Name; this.txtScrollerHorizontalOffset.Text = sender.HorizontalOffset.ToString(); this.txtScrollerVerticalOffset.Text = sender.VerticalOffset.ToString(); this.txtScrollerZoomFactor.Text = sender.ZoomFactor.ToString(); this.fullLogs.Add(senderId + " ViewChanged H=" + this.txtScrollerHorizontalOffset.Text + ", V=" + this.txtScrollerVerticalOffset.Text + ", ZF=" + this.txtScrollerZoomFactor.Text); }
private void Scroller_StateChanged(Scroller sender, object args) { FrameworkElement parent = VisualTreeHelper.GetParent(sender) as FrameworkElement; FrameworkElement grandParent = VisualTreeHelper.GetParent(parent) as FrameworkElement; string senderId = grandParent.Name + "." + parent.Name + "." + sender.Name; this.txtScrollerState.Text = senderId + " " + sender.State.ToString(); this.fullLogs.Add(senderId + " StateChanged S=" + sender.State.ToString()); }
private void Scroller_ViewChangeCompleted(Scroller sender, ScrollerViewChangeCompletedEventArgs args) { this.fullLogs.Add(sender.Name + " ViewChangeCompleted ViewChangeId=" + args.ViewChangeId + ", Result=" + args.Result); if (this.scroller52ZoomFactorChangeId == args.ViewChangeId) { this.txtResetStatus.Text = "Views reset"; } }
private void Scroller_StateChanged(Scroller sender, object args) { if (sender == scroller0) { txtScroller0State.Text = "scroller0 " + scroller0.State.ToString(); } else if (sender == scroller1) { txtScroller1State.Text = "scroller1 " + scroller1.State.ToString(); } }
public CompositionInteractionSourceCollection GetInteractionSources(Scroller scroller) { if (m_interactionSources.ContainsKey(scroller)) { return(m_interactionSources[scroller]); } else { return(null); } }
private void Scroller_ViewChangeCompleted(Scroller sender, ScrollerViewChangeCompletedEventArgs args) { string senderId = (VisualTreeHelper.GetParent(sender) as FrameworkElement).Name + "." + sender.Name; this.fullLogs.Add(senderId + " View change completed. ViewChangeId=" + args.ViewChangeId + ", Result=" + args.Result); if (args.ViewChangeId == scrollerView52ZoomFactorChangeId) { this.txtResetStatus.Text = "Views reset"; scrollerView52ZoomFactorChangeId = -1; } }
private void ValidateChildWithConstrainedWidth( Compositor compositor, Scroller scroller, FrameworkElement child, HorizontalAlignment horizontalAlignment, float expectedVerticalOffset, float expectedMinPosition, float expectedZoomFactor) { const double c_leftMargin = 20.0; const double c_rightMargin = 30.0; const double c_scrollerWidth = 200.0; float horizontalOffset = 0.0f; float verticalOffset = 0.0f; float zoomFactor = 1.0f; double arrangeRenderSizesDelta = 0.0; double expectedHorizontalOffset = 0.0; RunOnUIThread.Execute(() => { Log.Comment("Covering alignment " + horizontalAlignment.ToString()); child.HorizontalAlignment = horizontalAlignment; }); IdleSynchronizer.Wait(); RunOnUIThread.Execute(() => { Verify.AreEqual(child.HorizontalAlignment, horizontalAlignment); Verify.AreEqual(child.DesiredSize.Width, c_scrollerWidth); // 200 Verify.AreEqual(child.RenderSize.Width, c_scrollerWidth - c_leftMargin - c_rightMargin); // 200 - 20 - 30 = 150 arrangeRenderSizesDelta = GetArrangeRenderSizesDelta( BiDirectionalAlignmentFromHorizontalAlignment(horizontalAlignment), extentSize: c_scrollerWidth, renderSize: c_scrollerWidth - c_leftMargin - c_rightMargin, nearMargin: c_leftMargin, farMargin: c_rightMargin); Verify.AreEqual(arrangeRenderSizesDelta, 20.0); expectedHorizontalOffset = -expectedMinPosition + (expectedZoomFactor - 1.0f) * arrangeRenderSizesDelta; }); SpyTranslationAndScale(scroller, compositor, out horizontalOffset, out verticalOffset, out zoomFactor); Log.Comment("horizontalOffset={0}, verticalOffset={1}, zoomFactor={2}", horizontalOffset, verticalOffset, zoomFactor); Log.Comment("expectedHorizontalOffset={0}, expectedVerticalOffset={1}, expectedZoomFactor={2}", expectedHorizontalOffset, expectedVerticalOffset, expectedZoomFactor); Verify.AreEqual(horizontalOffset, expectedHorizontalOffset); Verify.AreEqual(verticalOffset, expectedVerticalOffset); Verify.AreEqual(zoomFactor, expectedZoomFactor); }
private void AnchoringAtAlmostNearEdge(Orientation orientation) { using (ScrollerTestHooksHelper scrollerTestHooksHelper = new ScrollerTestHooksHelper()) { Scroller scroller = null; AutoResetEvent scrollerLoadedEvent = new AutoResetEvent(false); AutoResetEvent scrollerViewChangedEvent = new AutoResetEvent(false); RunOnUIThread.Execute(() => { scroller = new Scroller(); SetupDefaultAnchoringUI(orientation, scroller, scrollerLoadedEvent); }); WaitForEvent("Waiting for Loaded event", scrollerLoadedEvent); double horizontalOffset = orientation == Orientation.Vertical ? 0.0 : 1.0; double verticalOffset = orientation == Orientation.Vertical ? 1.0 : 0.0; ChangeOffsets(scroller, horizontalOffset, verticalOffset, ScrollerViewKind.Absolute, ScrollerViewChangeKind.DisableAnimation, ScrollerViewChangeSnapPointRespect.IgnoreSnapPoints); RunOnUIThread.Execute(() => { scroller.ViewChanged += delegate(Scroller sender, object args) { Log.Comment("ViewChanged - HorizontalOffset={0}, VerticalOffset={1}, ZoomFactor={2}", sender.HorizontalOffset, sender.VerticalOffset, sender.ZoomFactor); scrollerViewChangedEvent.Set(); }; Log.Comment("Inserting child at near edge"); InsertStackPanelChild((scroller.Child as Border).Child as StackPanel, 1 /*operationCount*/, 0 /*newIndex*/, 1 /*newCount*/); }); WaitForEvent("Waiting for Scroller.ViewChanged event", scrollerViewChangedEvent); IdleSynchronizer.Wait(); RunOnUIThread.Execute(() => { Log.Comment("Scroller offset change expected"); if (orientation == Orientation.Vertical) { Verify.AreEqual(scroller.VerticalOffset, 127.0); } else { Verify.AreEqual(scroller.HorizontalOffset, 127.0); } }); } }
private void ScrollerTestHooks_InteractionSourcesChanged(Scroller sender, ScrollerTestHooksInteractionSourcesChangedEventArgs args) { Log.Comment(" InteractionSourcesChanged: s: " + sender.Name); if (!m_interactionSources.ContainsKey(sender)) { m_interactionSources.Add(sender, args.InteractionSources); } else { m_interactionSources[sender] = args.InteractionSources; } LogInteractionSources(args.InteractionSources); }
private void ResetView(Scroller scroller) { int viewChangeId = scroller.ChangeOffsets(new ScrollerChangeOffsetsOptions(0.0, 0.0, ScrollerViewKind.Absolute, ScrollerViewChangeKind.DisableAnimation, ScrollerViewChangeSnapPointRespect.IgnoreSnapPoints)); this.fullLogs.Add(scroller.Name + " ChangeOffsets requested. Id=" + viewChangeId); viewChangeId = scroller.ChangeZoomFactor(new ScrollerChangeZoomFactorOptions(1.0f, ScrollerViewKind.Absolute, System.Numerics.Vector2.Zero, ScrollerViewChangeKind.DisableAnimation, ScrollerViewChangeSnapPointRespect.IgnoreSnapPoints)); this.fullLogs.Add(scroller.Name + " ChangeZoomFactor requested. Id=" + viewChangeId); if (this.scroller52 == scroller) { scroller52ZoomFactorChangeId = viewChangeId; } }
private void SetupScroller() { LinearGradientBrush threeColorsLGB = new LinearGradientBrush() { StartPoint = new Point(0, 0), EndPoint = new Point(1, 1) }; GradientStop blueGS = new GradientStop() { Color = Colors.Blue, Offset = 0.0 }; threeColorsLGB.GradientStops.Add(blueGS); GradientStop yellowGS = new GradientStop() { Color = Colors.Yellow, Offset = 0.5 }; threeColorsLGB.GradientStops.Add(yellowGS); GradientStop redGS = new GradientStop() { Color = Colors.Red, Offset = 1.0 }; threeColorsLGB.GradientStops.Add(redGS); Rectangle rectSC = new Rectangle(); rectSC.Width = 1000; rectSC.Height = 900; rectSC.Fill = threeColorsLGB; Scroller s = new Scroller(); s.Name = "s"; s.Width = 500; s.Height = 300; s.Background = new SolidColorBrush(Windows.UI.Colors.LightBlue); s.Margin = new Thickness(4); s.HorizontalScrollMode = ScrollerScrollMode.Enabled; s.VerticalScrollMode = ScrollerScrollMode.Enabled; s.Child = rectSC; s.ViewChanged += Scroller_ViewChanged; sp.Children.Insert(0, s); parallaxView3.Source = s; parallaxView4.Source = s; }
private void ResetView(ScrollerView scrollerView) { Scroller scroller = ScrollerViewTestHooks.GetScrollerPart(scrollerView); 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 (scrollerView == this.scrollerView52) scrollerView52ZoomFactorChangeId = viewChangeId; }
private void BtnDeleteScroller_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e) { if (scroller == null || grid.Children.Count == 6) { return; } scroller.Child = null; scroller = null; btnDeleteScroller.IsEnabled = false; btnAddScroller.IsEnabled = false; btnCreateScroller.IsEnabled = true; }
public void BasicPadding() { if (!PlatformConfiguration.IsOsVersionGreaterThanOrEqual(OSVersion.Redstone2)) { Log.Comment("Skipping test on RS1 because test sometimes hangs indefinitely."); // Bug 12286203 return; } const double c_Padding = 50.0; Scroller scroller = null; Border borderScrollerChild = null; Rectangle rectangle = null; AutoResetEvent scrollerLoadedEvent = new AutoResetEvent(false); RunOnUIThread.Execute(() => { borderScrollerChild = new Border(); rectangle = new Rectangle(); scroller = new Scroller(); borderScrollerChild.Width = c_defaultUIScrollerChildWidth; borderScrollerChild.Height = c_defaultUIScrollerChildHeight; borderScrollerChild.Child = rectangle; scroller.Child = borderScrollerChild; SetupDefaultUI(scroller, null /*rectangleScrollerChild*/, scrollerLoadedEvent); }); WaitForEvent("Waiting for Loaded event", scrollerLoadedEvent); RunOnUIThread.Execute(() => { Log.Comment("Adding Padding to Scroller.Child"); borderScrollerChild.Padding = new Thickness(c_Padding); }); // Try to jump beyond maximum offsets ChangeOffsets( scroller, c_defaultUIScrollerChildWidth - c_defaultUIScrollerWidth + 10.0, c_defaultUIScrollerChildHeight - c_defaultUIScrollerHeight + 10.0, ScrollerViewKind.Absolute, ScrollerViewChangeKind.DisableAnimation, ScrollerViewChangeSnapPointRespect.IgnoreSnapPoints, true /*hookViewChanged*/, c_defaultUIScrollerChildWidth - c_defaultUIScrollerWidth, c_defaultUIScrollerChildHeight - c_defaultUIScrollerHeight); }
private void Scroller_ViewChanged(Scroller sender, object args) { if (chkLogScrollerEvents.IsChecked == true) { AppendAsyncEventMessage("ViewChanged H=" + sender.HorizontalOffset.ToString() + ", V=" + sender.VerticalOffset.ToString() + ", S=" + sender.ZoomFactor.ToString()); } double newScrollerOffset = scroller.VerticalOffset; if (lstTriggeredOperations.Count > 0 && ((lastScrollerOffset <= 350.0 && newScrollerOffset > 350.0) || (lastScrollerOffset >= 350.0 && newScrollerOffset < 350.0))) { ExecuteTriggerableOperations(); } lastScrollerOffset = newScrollerOffset; }
public void OverlappingRegularSnapPointsThrow() { RunOnUIThread.Execute(() => { Scroller scroller = new Scroller(); ScrollerSnapPointRegular snapPoint1 = new ScrollerSnapPointRegular(offset: 10, interval: 10, start: 10, end: 100, alignment: ScrollerSnapPointAlignment.Near); ScrollerSnapPointRegular snapPoint2 = new ScrollerSnapPointRegular(offset: 10, interval: 10, start: 10, end: 100, alignment: ScrollerSnapPointAlignment.Near); ScrollerSnapPointRegular snapPoint3 = new ScrollerSnapPointRegular(offset: 0, interval: 2, start: 0, end: 12, alignment: ScrollerSnapPointAlignment.Near); ScrollerSnapPointRegular snapPoint4 = new ScrollerSnapPointRegular(offset: 0, interval: 2, start: 0, end: 10, alignment: ScrollerSnapPointAlignment.Near); ScrollerSnapPointRegular snapPoint5 = new ScrollerSnapPointRegular(offset: 100, interval: 2, start: 100, end: 200, alignment: ScrollerSnapPointAlignment.Near); scroller.VerticalSnapPoints.Add(snapPoint1); Verify.Throws <Exception>(() => { scroller.VerticalSnapPoints.Add(snapPoint2); }); Verify.Throws <Exception>(() => { scroller.VerticalSnapPoints.Add(snapPoint3); }); scroller.HorizontalSnapPoints.Add(snapPoint4); scroller.HorizontalSnapPoints.Add(snapPoint5); }); }
private void ChkIsVerticallyScrollable_Unchecked(object sender, RoutedEventArgs e) { CheckBox chkIsVerticallyScrollable = sender as CheckBox; ComboBox cmbVerticalScrollController = chkIsVerticallyScrollable == chkIsVerticallyScrollable1 ? cmbVerticalScrollController1 : cmbVerticalScrollController2; Scroller scroller = chkIsVerticallyScrollable == chkIsVerticallyScrollable1 ? scroller1 : scroller2; scroller.VerticalScrollMode = ScrollerScrollMode.Disabled; switch (cmbVerticalScrollController.SelectedIndex) { case 1: verticalCompositionScrollController.IsEnabled = false; break; case 2: horizontalCompositionScrollController.IsEnabled = false; break; } }
private void Scroller_AnchorRequested(Scroller sender, ScrollerAnchorRequestedEventArgs args) { try { if (chkLogScrollerEvents.IsChecked == true) { IList <UIElement> anchorCandidates = args.AnchorCandidates; AppendAsyncEventMessage("AnchorRequested anchor=" + (args.AnchorElement == null ? "null" : "non-null") + ", count=" + anchorCandidates.Count); } args.AnchorElement = anchorElement; } catch (Exception ex) { txtExceptionReport.Text = ex.ToString(); lstScrollerEvents.Items.Add(ex.ToString()); } }