Beispiel #1
0
        private static void RenderCurrentBoundary([NotNull] BoundaryChangedEventArgs args, [NotNull] Canvas drawCanvas)
        {
            var boundary = args.Boundary;
            var top      = boundary.BoundingRect.Top;

            if (top.IsMinValue())
            {
                return;
            }

            Action <List <Boundary.Step> > render = steps =>
            {
                foreach (var step in steps)
                {
                    drawCanvas.Children.Add(new Line
                    {
                        X1              = step.X,
                        Y1              = step.Top,
                        X2              = step.X,
                        Y2              = step.Bottom,
                        Stroke          = new SolidColorBrush(Colors.Red),
                        StrokeThickness = 2
                    });
                }
            };

            render(boundary.Left);
            render(boundary.Right);
        }
Beispiel #2
0
        private void StateBoundaryChanged(object sender, BoundaryChangedEventArgs args)
        {
            if (args.State.CurrentOperation > LayoutState.Operation.VerticalLayout && args.State.CurrentOperation < LayoutState.Operation.Completed)
            {
                Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
                {
                    FireListViewPropertyChanged(m_diagram.VisualTree);
                    RenderBoxes(m_diagram.VisualTree, DrawCanvas);
                    RenderCurrentBoundary(args, DrawCanvas);
                });

                // wait until user releases the wait handle
                try
                {
                    m_progressWaitHandle?.WaitOne();
                }
                catch (ObjectDisposedException)
                {
                    // silently exit if this wait handle is not longer valid
                    args.State.BoundaryChanged  -= StateBoundaryChanged;
                    args.State.OperationChanged -= StateOperationChanged;
                }
            }
        }