コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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);
            });
        }