本文主要是介绍WPF livecharts 折线图遮挡数字问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在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));
这句话。另外字体大小什么的也可以根据需求调整
这篇关于WPF livecharts 折线图遮挡数字问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!