• WPF livecharts 折线图遮挡数字问题


    WPF里使用livecharts,如果折线图或者柱状图有多个的时候,可能会出现两个数字遮挡问题,这时候要设置DataLabelsTemplate 属性。

    如LineSeries设置代码如下:

    第一个折线图的DataLabelsTemplate

    1. var stackPanelFactory = new FrameworkElementFactory(typeof(StackPanel));
    2. stackPanelFactory.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
    3. var textBlockFactoryA = new FrameworkElementFactory(typeof(TextBlock));
    4. textBlockFactoryA.SetValue(TextElement.ForegroundProperty, new SolidColorBrush((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#5BABEF")));
    5. textBlockFactoryA.SetBinding(TextBlock.TextProperty, new Binding("FormattedText"));
    6. textBlockFactoryA.SetValue(TextBlock.MarginProperty, new Thickness(0, 0, 0, -8));
    7. stackPanelFactory.AppendChild(textBlockFactoryA);
    8. var dataTemplate = new DataTemplate() { VisualTree = stackPanelFactory };

    第二个折线图的DataLabelsTemplate

    1. var stackPanelFactory2 = new FrameworkElementFactory(typeof(StackPanel));
    2. stackPanelFactory2.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
    3. var textBlockFactoryA2 = new FrameworkElementFactory(typeof(TextBlock));
    4. textBlockFactoryA2.SetValue(TextElement.ForegroundProperty, new SolidColorBrush(Colors.White));
    5. textBlockFactoryA2.SetBinding(TextBlock.TextProperty, new Binding("FormattedText"));
    6. textBlockFactoryA2.SetValue(TextBlock.MarginProperty, new Thickness(0, 0, 0, -40));
    7. stackPanelFactory2.AppendChild(textBlockFactoryA2);
    8. var dataTemplate2 = new DataTemplate() { VisualTree = stackPanelFactory2 };

    设置LineSeries

    1. Func<double, string> Formatter;
    2. SeriesCollection = new SeriesCollection
    3. {
    4. new LineSeries
    5. {
    6. Title = "",
    7. DataLabels=true,
    8. //注意设置在这里
    9. DataLabelsTemplate= dataTemplate,
    10. Values = inValueList,
    11. Stroke=new SolidColorBrush((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#5BABEF")),
    12. Foreground= new SolidColorBrush((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#5BABEF")),
    13. FontSize=26,
    14. },
    15. new LineSeries
    16. {
    17. Title="",
    18. DataLabels=true,
    19. //注意设置在这里
    20. DataLabelsTemplate= dataTemplate2,
    21. Values= outValueList,
    22. Stroke =new SolidColorBrush(Colors.White),
    23. Foreground= new SolidColorBrush(Colors.White),
    24. FontSize=26,
    25. },
    26. };
    27. Formatter = value => value.ToString("N");
    28. lvcWeekLabel.Labels = Labels;
    29. lvcWeekLabel.LabelFormatter = Formatter;
    30. lvcWeek.Series = SeriesCollection;

    具体位置可能要根据你的图表大小调整,主要就是调整

    textBlockFactoryA2.SetValue(TextBlock.MarginProperty, new Thickness(0, 0, 0, -40));

    这句话。另外字体大小什么的也可以根据需求调整

  • 相关阅读:
    基于Vue+SpringBoot的高校学生管理系统 开源项目
    element ui 中 el-table选中数据
    利用PHP快速抓取音频数据的方法与技巧
    ADP出席第六届进博会跨境人才服务论坛|薪酬管理数字化加合规性,为跨境企业提升成本效率助长信心
    elementui-plus el-tree组件数据不显示问题解决
    吃透Chisel语言.28.Chisel进阶之有限状态机(二)——Mealy状态机及与Moore状态机的对比
    使用github copilot
    样式的双向绑定的2种方式,实现样式交互效果
    leetcode_2909元素和最小的山形三元组
    零代码编程:用ChatGPT批量将多个文件夹中的视频转为音频
  • 原文地址:https://blog.csdn.net/jsrgckf/article/details/133684901