WPF图表库LiveChart异常问题处理-System.ArgumentOutOfRangeException:指定的参数超出了有效值的范围

问题:

在使用liveChart处理一个以时间为X轴的曲线时,遇到一个报错:指定的参数超出了有效值的范围System.ArgumentOutOfRangeException:“Specified argument was out of the range of valid values. Arg_ParamName_Name” 指定的参数超出了有效值的范围

报错位置发生在框架内的代码PageSegmentCollection中,非自己写的代码,无法定位

在这里插入图片描述

代码:

在项目中使用MVVM模式,使用了自定义类型DataModel对折线图的xy轴进行绑定

DataModel:

    public class DataModel
    {
        /// <summary>
        /// 时间,x轴
        /// </summary>
        public DateTime Time { get; set; }

        /// <summary>
        /// 值,y轴
        /// </summary>
        public double Value { get; set; }
    }

Xaml:

    <lvc:CartesianChart
        Background="White">
        <lvc:CartesianChart.Series>
            <lvc:LineSeries
                Title=""
                DataLabels="False"
                PointGeometrySize="0"
                Values="{Binding SeriesValues}" />
        </lvc:CartesianChart.Series>
        <lvc:CartesianChart.AxisX>
            <lvc:Axis LabelFormatter="{Binding XFormatter}" />
        </lvc:CartesianChart.AxisX>
    </lvc:CartesianChart>

Xaml.cs

   public MainWindow()
 {
     InitializeComponent();
       this.DataContext = new MainWindowViewModel();
     //构造函数实现模型跟图表xy的映射关系
     var mapper = Mappers
         .Xy<DataModel>()
         .X(model => (model.Time - default(DateTime)).TotalMinutes) 
         .Y(model => model.Value); 
     Charting.For<DataModel>(mapper);
 }
  
  

ViewModel代码:

 public class MainWindowViewModel : ObservableObject
 {
     private ChartValues<DataModel> _seriesValues;
     public ChartValues<DataModel> SeriesValues
     {
         get { return _seriesValues; }
         set { SetProperty(ref _seriesValues, value); }
     }

     public Func<double, string> XFormatter { get; set; }

     public MainWindowViewModel()
     {
         //设置x轴数据转换 - 需要处理值小于0的情况,会导致转换成DateTime失败报错
         XFormatter = x =>
             x >= 0 ? default(DateTime).AddMinutes(x).ToString("MM-dd HH:mm") : "00-00 00:00";
         SeriesValues = new ChartValues<DataModel>();
         //添加测试数据
       
     }
 }

测试问题

测试1 加入相同值的点

正常运行,没报错

//测试1 加入相同值的点
SeriesValues.Add(
    new DataModel { Value = 5, Time = DateTime.Parse("2024-1-30 19:00:00") }
);
SeriesValues.Add(
    new DataModel { Value = 5, Time = DateTime.Parse("2024-1-30 19:00:00") }
);

测试2 加入相同对象

运行报错

//测试2 加入相同对象
var point = new DataModel { Value = 5, Time = DateTime.Parse("2024-1-30 19:00:00") };
SeriesValues.Add(point);
SeriesValues.Add(point);

在这里插入图片描述

原因

在使用模型进行映射绑定的时候,同一个对象加入多次,导致报错。

解决方法:查看添加集合前的处理代码中,是否有可能导致重复加入的情况,进行处理避免。

其他常见的问题:

转换时间坐标的时候,处理小于0的情况

在没数据的时间,livechart会有默认自动的X轴坐标,-0.5,0,0.5,1等等,会有复数,需要处理一下x<0的情况

 XFormatter = x =>
             x >= 0 ? default(DateTime).AddMinutes(x).ToString("MM-dd HH:mm") : "00-00 00:00";

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/361247.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv5源码逐行超详细注释与解读(1)——项目目录结构解析

前言 前面简单介绍了YOLOv5的网络结构和创新点&#xff08;直通车&#xff1a;【YOLO系列】YOLOv5超详细解读&#xff08;网络详解&#xff09;&#xff09; 在接下来我们会进入到YOLOv5更深一步的学习&#xff0c;首先从源码解读开始。 因为我是纯小白&#xff0c;刚开始下…

EXCHANGE PARTITION 方法处理(挽救)大型分区表中的块损坏的步骤

当在巨大的表分区块&#xff08;例如 ORA-01578&#xff09;中发现损坏时&#xff0c;并且我们没有备份&#xff08;例如 RMAN、操作系统级别、导出或任何外部资源&#xff09;来恢复损坏&#xff0c;我们仍然可以尝试挽救使用 10231 事件处理表中的剩余数据&#xff08;由于跳…

扩展学习|商业智能和大数据分析的研究前景(比对分析)

文献来源&#xff1a; Liang T P , Liu Y H .Research Landscape of Business Intelligence and Big Data analytics: A bibliometrics study[J].Expert Systems with Applications, 2018, 111(NOV.):2-10.DOI:10.1016/j.eswa.2018.05.018. 信息和通信技术的快速发展导致了数字…

养老院|基于Springboot的养老院管理系统设计与实现(源码+数据库+文档)

养老院管理系统目录 目录 基于Springboot的养老院管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、老人信息管理 2、家属信息管理 3、公告类型管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选…

西瓜书读书笔记整理(十二) —— 第十二章 计算学习理论(下)

第十二章 计算学习理论&#xff08;下&#xff09; 12.4 VC 维&#xff08;Vapnik-Chervonenkis dimension&#xff09;12.4.1 什么是 VC 维12.4.2 增长函数&#xff08;growth function&#xff09;、对分&#xff08;dichotomy&#xff09;和打散&#xff08;shattering&…

【Linux系统】文件系统和软硬链接

前言 之前的博客介绍过了打开的文件是如何被操作系统管理起来的&#xff0c;但是绝大多数文件是没有被打开的&#xff0c;静静地躺在磁盘上。 这些文件也应该要被操作系统管理起来&#xff0c;以方便系统快速地在磁盘上查找它们&#xff0c;进而加载到内存。 这套管理方式就…

vue使用json格式化

安装 npm i bin-code-editor -S // Vue2 npm install vue-json-viewer --save 在main.js引用 //引入bin-code-editor相关插件和样式 import CodeEditor from bin-code-editor; import bin-code-editor/lib/styles/index.css; import JsonViewer from vue-json-viewer //vue使用…

golang开源的可嵌入应用程序高性能的MQTT服务

golang开源的可嵌入应用程序高性能的MQTT服务 什么是MQTT&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的、开放的消息传输协议&#xff0c;设计用于在低带宽、高延迟或不可靠的网络环境中进行通信。MQTT最初由IBM开发&#xf…

python webdriver 测试框架数据驱动json文件驱动的方式

简介&#xff1a; 数据驱动excel驱动方式,就是数据配置在excel里面&#xff0c;主程序调用的时候每次用从excel里取出的数据作为参数&#xff0c;进行操作&#xff0c; 需要掌握的地方是对excel的操作&#xff0c;要灵活的找到目标数据 测试数据.xlsx: 路径-D:\test\0627 E…

产品原型图设计规范大全

目前&#xff0c;市场上许多产品经理或设计师都在使用一些优秀的原型设计规范&#xff0c;这些规范几乎涵盖了原型设计的许多方面。一套好的、完整的原型设计规范可以统一产品设计风格&#xff0c;检验产品的可用性&#xff0c;有效提高产品经理绘制原型图的效率&#xff0c;更…

力扣238. 除自身以外数组的乘积(前后缀和)

Problem: 238. 除自身以外数组的乘积 文章目录 题目描述思路复杂度Code 题目描述 思路 思路1&#xff1a; 1.先求取数组的包括当前下标值得前后缀乘积&#xff08;利用两个数组记录下来分别为leftProduct和rightProduct&#xff09; 2.当求取一个下标为i的数组中的元素&#x…

构建基于Flask的跑腿外卖小程序

跑腿外卖小程序作为现代生活中的重要组成部分&#xff0c;其技术实现涉及诸多方面&#xff0c;其中Web开发框架是至关重要的一环。在这篇文章中&#xff0c;我们将使用Python的Flask框架构建一个简单的跑腿外卖小程序的原型&#xff0c;展示其基本功能和实现原理。 首先&…

linux --中断管理 -- irq的自动探测机制

irq自动探测机制 如果一个设备的驱动程序无法确定它说管理的设备的软件中断号irq&#xff0c;此时设备驱动程序可以使用irq的自动探测机制来获取其正在使用的irq。 使用自动探测机制的条件 内核与驱动&#xff0c;必须共同努力才能完成只限于非共享中断的情况 探测前&#…

如何查看某一页面在在谷歌有哪些关键词

随着跨境贸易的不断发展&#xff0c;谷歌SEO也被越来越多的人群所了解&#xff0c;所接受。我们在日常操作SEO的时候&#xff0c;往往都会远见这样的事情&#xff0c;那就是自己网站的某一个页面原本只是简单的承载着某一个关键词&#xff0c;但是随着时间的推移&#xff0c;这…

Shell脚本之 -------------免交互操作

一、Here Document 1.Here Document概述 Here Document 使用I/O重定向的方式将命令列表提供给交互式程序 Here Document 是标准输 入的一种替代品&#xff0c;可以帮助脚本开发人员不必使用临时文件来构建输入信息&#xff0c;而是直接就地 生产出一个文件并用作命令的标准…

Linux——动静态库

在进行开发过程中&#xff0c;我们不可避免地会使用到人家的库&#xff0c;那么库到底是什 么&#xff1f;而库又分为动态库和静态库&#xff0c;那么这两个又是什么&#xff1f;这篇博客由我来 简单介绍动静态库。文章目录 1. 库2. 静态库a. 静态库的制作b. 使用静态库 3. 动态…

打击者H5小游戏

欢迎来到程序小院 打击者 玩法&#xff1a;点击飞机上下左右移动躲过子弹射击&#xff0c;打掉上方敌人飞机&#xff0c; 遇到药包会增加能量&#xff0c;弹药包会升级武器&#xff0c;快去射击吧^^。开始游戏https://www.ormcc.com/play/gameStart/262 html <div id"…

基于矢量控制的交流电机驱动simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 交流电机基础 4.2 矢量控制原理 4.3 矢量控制的实现 5.完整工程文件 1.课题概述 基于矢量控制的交流电机驱动simulink建模与仿真。系统仿真输出电压&#xff0c;电流&#xff0c;电机转速以及扭矩…

语言革命:NLP与GPT-3.5如何改变我们的世界

文章目录 &#x1f4d1;前言一、技术进步与应用场景1.1 技术进步1.2 应用场景 二、挑战与前景三、伦理和社会影响四、实践经验五、总结与展望 &#x1f4d1;前言 自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是人工智能领域的一个重要分支…

快速入门存内计算—助力人工智能加速深度学习模型的训练和推理

存内计算&#xff1a;提高计算性能和能效的新技术 传统的计算机架构是将数据存储在存储器中&#xff0c;然后将数据传输到计算单元进行处理。这种架构存在一个性能瓶颈&#xff0c;即数据传输延迟。存内计算通过将计算单元集成到存储器中&#xff0c;消除了数据传输延迟&#…