private void BtnMIAddSnapPoint_Click(object sender, RoutedEventArgs e) { try { double value = Convert.ToDouble(txtMISnapPointValue.Text); ScrollerSnapPointBase newSnapPoint = new ScrollerSnapPointIrregular(value, ScrollerSnapPointAlignment.Near); Color fillColor = GetNewColor(); ScrollerTestHooks.SetSnapPointVisualizationColor(newSnapPoint, fillColor); markupScroller.VerticalSnapPoints.Add(newSnapPoint); FillSnapPoint(new List <double> { value }, value, value, fillColor); FixConsolidatedView(); } catch (Exception ex) { this.fullLogs.Add(ex.ToString()); txtExceptionReport.Text = ex.ToString(); } }
private void RefreshSnapPoints(Scroller scroller, StackPanel stackPanel) { if (scroller != null && stackPanel != null && stackPanel.Children.Count > 0) { AppendAsyncEventMessage("Populating snap points for " + scroller.Name + ":"); ScrollerSnapPointIrregular sspi; GeneralTransform gt = stackPanel.TransformToVisual(scroller.Content); Point stackPanelOriginPoint = new Point(); stackPanelOriginPoint = gt.TransformPoint(stackPanelOriginPoint); if (stackPanel.Orientation == Orientation.Horizontal) { scroller.HorizontalSnapPoints.Clear(); sspi = new ScrollerSnapPointIrregular(stackPanelOriginPoint.X, ScrollerSnapPointAlignment.Near); AppendAsyncEventMessage("Adding horizontal snap point to " + scroller.Name + " at value " + stackPanelOriginPoint.X); scroller.HorizontalSnapPoints.Add(sspi); } else { scroller.VerticalSnapPoints.Clear(); sspi = new ScrollerSnapPointIrregular(stackPanelOriginPoint.Y, ScrollerSnapPointAlignment.Near); AppendAsyncEventMessage("Adding vertical snap point to " + scroller.Name + " at value " + stackPanelOriginPoint.Y); scroller.VerticalSnapPoints.Add(sspi); } foreach (UIElement child in stackPanel.Children) { FrameworkElement childAsFE = child as FrameworkElement; if (childAsFE != null) { gt = childAsFE.TransformToVisual(stackPanel); Point childOriginPoint = new Point(); childOriginPoint = gt.TransformPoint(childOriginPoint); double snapPointValue = 0.0; Thickness margin = childAsFE.Margin; if (stackPanel.Orientation == Orientation.Horizontal) { snapPointValue = margin.Right + childAsFE.ActualWidth + childOriginPoint.X; if (snapPointValue <= scroller.ScrollableWidth) { sspi = new ScrollerSnapPointIrregular(snapPointValue, ScrollerSnapPointAlignment.Near); AppendAsyncEventMessage("Adding horizontal snap point to " + scroller.Name + " at value " + snapPointValue); scroller.HorizontalSnapPoints.Add(sspi); } else { break; } } else { snapPointValue = margin.Bottom + childAsFE.ActualHeight + childOriginPoint.Y; if (snapPointValue <= scroller.ScrollableHeight) { sspi = new ScrollerSnapPointIrregular(snapPointValue, ScrollerSnapPointAlignment.Near); AppendAsyncEventMessage("Adding vertical snap point to " + scroller.Name + " at value " + snapPointValue); scroller.VerticalSnapPoints.Add(sspi); } else { break; } } } RefreshSnapPoints(scroller, child as StackPanel); } } }
public void CanAddAndRemoveSnapPointsFromAScroller() { Scroller scroller = null; ScrollerSnapPointBase snapPointBase1 = null; ScrollerSnapPointBase snapPointBase2 = null; ScrollerSnapPointBase snapPointBase3 = null; ScrollerSnapPointBase snapPointBase4 = null; RunOnUIThread.Execute(() => { scroller = new Scroller(); snapPointBase1 = new ScrollerSnapPointIrregular(snapPointValue: 10, alignment: ScrollerSnapPointAlignment.Near); snapPointBase2 = new ScrollerSnapPointIrregular(snapPointValue: 10, applicableRange: 3, alignment: ScrollerSnapPointAlignment.Near); snapPointBase3 = new ScrollerSnapPointRegular(offset: 10, interval: 10, start: 10, end: 100, alignment: ScrollerSnapPointAlignment.Near); snapPointBase4 = new ScrollerSnapPointRegular(offset: 100, interval: 10, start: 100, end: 200, applicableRange: 3, alignment: ScrollerSnapPointAlignment.Near); scroller.HorizontalSnapPoints.Add(snapPointBase1); scroller.VerticalSnapPoints.Add(snapPointBase1); scroller.ZoomSnapPoints.Add(snapPointBase1); }); IdleSynchronizer.Wait(); RunOnUIThread.Execute(() => { Verify.AreEqual <int>(1, scroller.HorizontalSnapPoints.Count); Verify.AreEqual <int>(1, scroller.VerticalSnapPoints.Count); Verify.AreEqual <int>(1, scroller.ZoomSnapPoints.Count); scroller.HorizontalSnapPoints.Add(snapPointBase2); scroller.HorizontalSnapPoints.Add(snapPointBase3); scroller.HorizontalSnapPoints.Add(snapPointBase4); }); IdleSynchronizer.Wait(); RunOnUIThread.Execute(() => { Verify.AreEqual <int>(4, scroller.HorizontalSnapPoints.Count); scroller.HorizontalSnapPoints.Remove(snapPointBase2); }); IdleSynchronizer.Wait(); RunOnUIThread.Execute(() => { Verify.AreEqual <int>(3, scroller.HorizontalSnapPoints.Count); scroller.HorizontalSnapPoints.Remove(snapPointBase2); }); IdleSynchronizer.Wait(); RunOnUIThread.Execute(() => { Verify.AreEqual <int>(3, scroller.HorizontalSnapPoints.Count); scroller.HorizontalSnapPoints.Clear(); }); IdleSynchronizer.Wait(); RunOnUIThread.Execute(() => { Verify.AreEqual <int>(0, scroller.HorizontalSnapPoints.Count); Verify.AreEqual <int>(1, scroller.VerticalSnapPoints.Count); Verify.AreEqual <int>(1, scroller.ZoomSnapPoints.Count); }); }