您好我有一个ObservableCollection每分钟都能获取数据。当它达到一个小时时,我想清除第一个项目并移动所有项目然后添加新项目,从而将其保持在60个元素。有谁知道怎么做?
这是我的代码:
public class MainWindow : Window
{
double i = 0;
double SolarCellPower = 0;
DispatcherTimer timer = new DispatcherTimer();
ObservableCollection<KeyValuePair<double, double>> Power = new ObservableCollection<KeyValuePair<double, double>>();
public MainWindow()
{
InitializeComponent();
timer.Interval = new TimeSpan(0, 0, 1); // per 5 seconds, you could change it
timer.Tick += new EventHandler(timer_Tick);
timer.IsEnabled = true;
}
void timer_Tick(object sender, EventArgs e)
{
SolarCellPower = double.Parse(textBox18.Text);
Power.Add(new KeyValuePair<double, double>(i, SolarCellPower ));
i += 5;
Solar.ItemsSource = Power;
}
}
答案 0 :(得分:1)
只计算列表中的项目,如果计数等于60,则删除顶部项目。然后像平常一样插入新项目。
if (Power.Count == 60)
Power.RemoveAt(0);
Power.Add(new KeyValuePair<double, double>(i, SolarCellPower ));
此外,如果您绑定ItemsSource而不是设置它,它将在集合更改时自动更新。