在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));文章来源:https://www.toymoban.com/news/detail-726198.html
这句话。另外字体大小什么的也可以根据需求调整文章来源地址https://www.toymoban.com/news/detail-726198.html
到了这里,关于WPF livecharts 折线图遮挡数字问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!