private void GenerateLabel(double val, Range dataRange)
{
double fraction = dataRange.Fraction(val);
Grid label = new Grid();
_labels.Children.Add(label);
label.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(fraction, GridUnitType.Star) });
label.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(0, GridUnitType.Pixel) });
label.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1 - fraction, GridUnitType.Star) });
StackPanel stackPanel = new StackPanel
{
VerticalAlignment = VerticalAlignment.Top,
HorizontalAlignment = HorizontalAlignment.Center,
Orientation = Orientation.Vertical,
Margin = new Thickness(-100, 0, -100, 0)
};
Grid.SetColumn(stackPanel, 1);
label.Children.Add(stackPanel);
Rectangle rect = new Rectangle { Stroke = ForegroundColor, Width = 1, Height = 5, Opacity = 0.5, Margin = new Thickness(2, 0, 0, 0) };
stackPanel.Children.Add(rect);
TextBlock text = new TextBlock
{
Text = FormattedValue(val)
};
stackPanel.Children.Add(text);
}