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