WPF LiveChart中如何初始化含30个值的Decimal类型ChartValues列表
解决WPF LiveChart初始化30个占位值的ChartValues问题
你遇到的「Index out of range」错误原因很明确:刚创建的SeriesCollection是空的,里面还没有任何Series实例,直接访问MonthProfit[0]自然会报索引越界——因为这个位置根本不存在任何对象。
要实现初始化一个包含30个Decimal占位值的ChartValues列表,你需要按以下步骤来:
- 先创建一个具体的Series(比如
LineSeries,LiveChart常用的系列类型) - 给这个Series的
Values属性初始化一个包含30个占位值的ChartValues<decimal> - 将这个Series添加到你的
SeriesCollection中
完整代码示例
初始化部分
public SeriesCollection MonthProfit { get; set; } = new SeriesCollection(); // 在构造函数或者初始化方法里执行以下代码 // 创建LineSeries,并初始化Values为30个默认0的decimal值 var profitSeries = new LineSeries { Values = new ChartValues<decimal>(Enumerable.Repeat(0m, 30)) }; // 将Series添加到集合中 MonthProfit.Add(profitSeries);
修改指定索引的值
现在你就可以安全地访问并修改对应位置的值了:
// 修改第0个位置的值为25 MonthProfit[0].Values[0] = 25; // 如果需要修改其他位置,比如第10个 // MonthProfit[0].Values[10] = 50;
额外说明
如果你不想用0m作为占位值,只需要把Enumerable.Repeat(0m, 30)里的0m换成你需要的默认Decimal值即可,比如100m或者decimal.MinValue都可以。
内容的提问来源于stack exchange,提问作者Magheggio
相关产品推荐
相关产品推荐

