private void GenerateChartStructure(Range range)
{
// Main grid
Grid root = new Grid { Margin = new Thickness(0, 10, 0, 10) }; // Vertical Margin for labels
root.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(0, GridUnitType.Auto) }); // Column for labels
root.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); // Column for chart
RootElement.Children.Add(root);
// Grid for labels (column 0)
_labels = new Grid();
root.Children.Add(_labels);
// Grid for chart (column 1)
Grid chart = new Grid();
Grid.SetColumn(chart, 1);
root.Children.Add(chart);
// Grid for Axis in coordinate 0
Grid gridAxis = new Grid();
double fraction = range.Fraction(0);
gridAxis.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1 - fraction, GridUnitType.Star) });
gridAxis.RowDefinitions.Add(new RowDefinition { Height = new GridLength(fraction, GridUnitType.Star) });
chart.Children.Add(gridAxis);
// Axis
Border axisX = new Border
{
BorderThickness = new Thickness(0.75),
BorderBrush = ForegroundColor,
Opacity = 0.5,
HorizontalAlignment = HorizontalAlignment.Stretch,
VerticalAlignment = VerticalAlignment.Bottom,
Margin = new Thickness(-5, 0, -5, 0)
};
gridAxis.Children.Add(axisX);
Border axisY = new Border
{
BorderThickness = new Thickness(0.75),
BorderBrush = ForegroundColor,
Opacity = 0.5,
HorizontalAlignment = HorizontalAlignment.Left,
VerticalAlignment = VerticalAlignment.Stretch,
Margin = new Thickness(0, -5, 0, -5)
};
chart.Children.Add(axisY);
// Grid for series of points
_series = new Grid();
chart.Children.Add(_series);
}