在WPF里使用livecharts,如果折线图或者柱状图有多个的时候,可能会出现两个数字遮挡问题,这时候要设置DataLabelsTemplate 属性。
如LineSeries设置代码如下:
第一个折线图的DataLabelsTemplate
- var stackPanelFactory = new FrameworkElementFactory(typeof(StackPanel));
- stackPanelFactory.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
- var textBlockFactoryA = new FrameworkElementFactory(typeof(TextBlock));
- textBlockFactoryA.SetValue(TextElement.ForegroundProperty, new SolidColorBrush((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#5BABEF")));
- textBlockFactoryA.SetBinding(TextBlock.TextProperty, new Binding("FormattedText"));
- textBlockFactoryA.SetValue(TextBlock.MarginProperty, new Thickness(0, 0, 0, -8));
- stackPanelFactory.AppendChild(textBlockFactoryA);
- var dataTemplate = new DataTemplate() { VisualTree = stackPanelFactory };
第二个折线图的DataLabelsTemplate
- var stackPanelFactory2 = new FrameworkElementFactory(typeof(StackPanel));
- stackPanelFactory2.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
- var textBlockFactoryA2 = new FrameworkElementFactory(typeof(TextBlock));
- textBlockFactoryA2.SetValue(TextElement.ForegroundProperty, new SolidColorBrush(Colors.White));
- textBlockFactoryA2.SetBinding(TextBlock.TextProperty, new Binding("FormattedText"));
- textBlockFactoryA2.SetValue(TextBlock.MarginProperty, new Thickness(0, 0, 0, -40));
- stackPanelFactory2.AppendChild(textBlockFactoryA2);
- var dataTemplate2 = new DataTemplate() { VisualTree = stackPanelFactory2 };
设置LineSeries
- Func<double, string> Formatter;
- SeriesCollection = new SeriesCollection
- {
- new LineSeries
- {
- Title = "",
- DataLabels=true,
- //注意设置在这里
- DataLabelsTemplate= dataTemplate,
- Values = inValueList,
- Stroke=new SolidColorBrush((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#5BABEF")),
- Foreground= new SolidColorBrush((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#5BABEF")),
- FontSize=26,
- },
- new LineSeries
- {
- Title="",
- DataLabels=true,
- //注意设置在这里
- DataLabelsTemplate= dataTemplate2,
- Values= outValueList,
- Stroke =new SolidColorBrush(Colors.White),
- Foreground= new SolidColorBrush(Colors.White),
- FontSize=26,
- },
-
- };
-
- Formatter = value => value.ToString("N");
- lvcWeekLabel.Labels = Labels;
- lvcWeekLabel.LabelFormatter = Formatter;
- lvcWeek.Series = SeriesCollection;
具体位置可能要根据你的图表大小调整,主要就是调整
textBlockFactoryA2.SetValue(TextBlock.MarginProperty, new Thickness(0, 0, 0, -40));
这句话。另外字体大小什么的也可以根据需求调整