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:CartesianChartBackground="White"><lvc:CartesianChart.Series><lvc:LineSeriesTitle=""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.hqwc.cn/news/452186.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑如何连接手机热点

随着移动互联网的快速发展&#xff0c;越来越多的人使用手机热点进行上网。有时候&#xff0c;我们需要在电脑上连接手机的热点&#xff0c;以方便工作或娱乐。本文将详细介绍如何将电脑连接到手机热点&#xff0c;帮助您轻松实现电脑上网。 一、为什么电脑需要连接手机热点&am…

人类的本性,逃不开党同伐异

近几年以来&#xff0c;不知道大家有没有感受到&#xff0c;网络上越来越充满戾气。 无论哪个网站&#xff0c;只要打开评论区&#xff0c;充斥在眼前的总是一片乌烟瘴气。 一言不合就「对线」&#xff0c;动不动一顶帽子扣过去&#xff0c;说话前先「站队」「找友军」&#xf…

ffmpeg的使用,安装,抽帧,加水印,截图,生成gif,格式转换,抓屏等

实际使用中总结的关于ffmpeg对视频的处理的记录文档 具体信息&#xff1a; http://ffmpeg.org/download.html 官网下载ffmpeg 关于ffmpeg的安装详细步骤和说明 装ffmpeg 方式,Linux和windows下的 http://bbs.csdn.net/topics/390519382 php 调用ffmpeg , http://bbs.csdn.net/t…

动画渲染案例 | 《舒克贝塔·五角飞碟》欢乐开年,经典IP唤醒童年回忆

《舒克贝塔五角飞碟》是由杭州童话大王影视有限公司、天津猫眼微影文化传媒有限公司出品&#xff0c;郑亚旗执导和编剧的动画电影。蓝海创意云为该片提供了渲染服务。电影于2023年12月30日正式上映&#xff0c;上映不到一个月时间累计票房突破5000万大关&#xff0c;并被评为“…

3 编辑器(Vim)

1.完成 vimtutor。备注&#xff1a;它在一个 80x24&#xff08;80 列&#xff0c;24 行&#xff09; 终端窗口看起来效果最好。 2.下载我们提供的 vimrc&#xff0c;然后把它保存到 ~/.vimrc。 通读这个注释详细的文件 &#xff08;用 Vim!&#xff09;&#xff0c; 然后观察 …

Unity引擎学习笔记之【动画剪辑和曲线操作】

动画剪辑和曲线Animation Clip 点选一个包含动画的FBX模型&#xff0c;在其检查器中便可查看动画剪辑 一、动画剪辑 1.Model 2.RIg 538.jpg%20%3D600x&pos_idimg-st6QJc3x-1707050419493) 无动画、旧版Animation动画、普通道具或角色动画、人形角色动画 3.Animation 二…

Unity DOTS中的baking(三)过滤baking的输出

Unity DOTS中的baking&#xff08;三&#xff09;过滤baking的输出 默认情况下&#xff0c;在conversation world&#xff08;baker和baking system运行的环境&#xff09;下产生的所有entities和components&#xff0c;都会作为baking环节的输出。在baking结束时&#xff0c;U…

【SpringBoot】权限系统与RBAC模型

&#x1f4dd;个页人主&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;SpringBoot⛺️稳重求进&#xff0c;晒太阳 权限系统与RBAC模型 权限 为了解决用户和资源的操作关系&#xff0c; 让指定的用户&#xff0c;只能操作指定的资源。 权限功能 菜单权限&a…

【Java 数据结构】优先级队列(堆)

优先级队列&#xff08;堆&#xff09; 1. 优先级队列1.1 概念 2. 优先级队列的模拟实现2.1 堆的概念2.2 堆的存储方式2.3 堆的创建2.3.1 堆向下调整2.3.2 堆的创建2.3.3 建堆的时间复杂度 2.4 堆的插入与删除2.4.1 堆的插入2.4.2 堆的删除 2.5 用堆模拟实现优先级队列 3.常用…

JavaWeb01-JDBC、Druid连接池

目录 一、JDBC 1.概述 2.本质 3.好处 4.使用步骤 5.JDBC_API &#xff08;1&#xff09;DriverManager&#xff08;驱动管理类&#xff09; &#xff08;2&#xff09;Connection&#xff08;数据库连接对象&#xff09; &#xff08;3&#xff09;Statement &#xf…

Python爬虫urllib详解

前言 学习爬虫&#xff0c;最初的操作便是模拟浏览器向服务器发出请求&#xff0c;那么我们需要从哪个地方做起呢&#xff1f;请求需要我们自己来构造吗&#xff1f;需要关心请求这个数据结构的实现吗&#xff1f;需要了解 HTTP、TCP、IP 层的网络传输通信吗&#xff1f;需要知…

【Python基础021】Python中的何如实现文件的读写

Python中文件的读写在程序运行过程中是一个非常重要的操作&#xff0c;我们通常会将一些大量的临时数据暂时存放到一个临时文件&#xff0c;这就需要用到文件的读取与写入功能。话不多说&#xff0c;我们直接上才艺。 1、文本文件和二进制文件 讲文件读写前&#xff0c;先说说…