private void CreateUIRepresentation() { if (Plotter == null) { return; } if (DataSource == null) { return; } drawnPaths.Clear(); DataSourceEnvironment environment = CreateEnvironment(); var points = DataSource.GetPoints(environment); var indexedPoints = IndexWrapper.Generate(points); // do nothing if there is nothing to draw if (!points.Any()) { return; } transformWhileCreateUI = Plotter.Viewport.Transform; int globalMinIndex; int globalMaxIndex; CreateAndAddPath(indexedPoints, out globalMinIndex, out globalMaxIndex, transformWhileCreateUI); indexRange = new Range <int>(globalMinIndex, globalMaxIndex); ViewportPanel.SetViewportBounds(canvas, Plotter.Viewport.Visible); // switching off content bounds calculation for children of ViewportHostPanel. panel.BeginBatchAdd(); if (canvas.Parent == null) { panel.Children.Add(canvas); } if (panel.Plotter == null) { Plotter.Dispatcher.BeginInvoke(() => { if (panel.Plotter == null && Plotter != null) { Plotter.Children.Add(panel); } }); } DataRect bounds = DataRect.Empty; if (environment.ContentBounds != null) { bounds = environment.ContentBounds.Value; } else { // todo is this necessary? bounds = points.GetBounds(); } Viewport2D.SetContentBounds(this, bounds); }
/// <summary> /// Initializes a new instance of the <see cref="PivotSegmentEditor"/> class. /// </summary> public PivotSegmentEditor() { ResourceDictionary resources = new ResourceDictionary { Source = new Uri("/DynamicDataDisplay;component/Charts/Shapes/PivotSegmentEditor.xaml", UriKind.Relative) }; panel.BeginBatchAdd(); ControlTemplate segmentTemplate = (ControlTemplate)resources["segment"]; segment = (Segment)segmentTemplate.LoadContent(); segment.DataContext = this; ControlTemplate startThumbTemplate = (ControlTemplate)resources["leftThumb"]; startThumb = (DraggablePoint)startThumbTemplate.LoadContent(); startThumb.DataContext = this; ControlTemplate endThumbTemplate = (ControlTemplate)resources["rightThumb"]; endThumb = (DraggablePoint)endThumbTemplate.LoadContent(); endThumb.DataContext = this; ControlTemplate leftRayTemplate = (ControlTemplate)resources["leftRay"]; leftRay = (ViewportRay)leftRayTemplate.LoadContent(); leftRay.DataContext = this; ControlTemplate rightRayTemplate = (ControlTemplate)resources["rightRay"]; rightRay = (ViewportRay)rightRayTemplate.LoadContent(); rightRay.DataContext = this; ControlTemplate mTextTemplate = (ControlTemplate)resources["mText"]; TextBlock mText = (TextBlock)mTextTemplate.LoadContent(); panel.Children.Add(mText); mText.DataContext = this; ControlTemplate leftPointGridTemplate = (ControlTemplate)resources["leftPointGrid"]; Panel leftPointGrid = (Panel)leftPointGridTemplate.LoadContent(); panel.Children.Add(leftPointGrid); leftPointGrid.DataContext = this; ControlTemplate rightPointGridTemplate = (ControlTemplate)resources["rightPointGrid"]; Panel rightPointGrid = (Panel)rightPointGridTemplate.LoadContent(); panel.Children.Add(rightPointGrid); rightPointGrid.DataContext = this; ControlTemplate leftTextTemplate = (ControlTemplate)resources["leftText"]; FrameworkElement leftBorder = (FrameworkElement)leftTextTemplate.LoadContent(); panel.Children.Add(leftBorder); leftBorder.DataContext = this; ControlTemplate rightTextTemplate = (ControlTemplate)resources["rightText"]; FrameworkElement rightBorder = (FrameworkElement)rightTextTemplate.LoadContent(); panel.Children.Add(rightBorder); rightBorder.DataContext = this; }