C#,WPF:在列表视图中处理每个元素

本文关键字:处理 元素 视图 列表 WPF | 更新日期: 2023-09-27 17:58:07

我有一个带有listview控件的WPF应用程序。应用程序基本上将文件加载到列表视图中。然后,我想遍历每个listview元素,突出显示当前行,并执行某个任务。

任务完成后,我用结果更新另一个文件和一个面板,然后转到下一个listview元素。

我以前在WinForms中做过这样的事情,但当涉及到WPF时,我是个新手。我想我主要关心的是如何处理第二个线程,而不是UI线程。WPF中的线程模型有什么不同吗?

其次,该程序本质上是一个通过ObservableCollection的循环:

for (int i = 0 ; i < Collection.Count; i++)
{
   HighlightCurrentRowInListView();
   Collection[i].DoWork();
   PostWorkToPanel();
   // Bad loop around code
   if (i == (Collection.Count - 1))
   { i = -1; }
}

如果我对集合(ObservableCollection)进行了更改,循环将如何更新?对于这个上下文,最好的迭代方法是foreach,.foreach(x=>x)?程序应该一直运行,直到按下"停止"按钮或其他什么按钮。

C#,WPF:在列表视图中处理每个元素

如果您需要有关线程模型的信息,请参阅相应的MSDN页面。

由于您有一个可观察的集合,您可以处理CollectionChanged事件,您可以查看项目是否已添加或删除,因此您可以从工作队列中添加或删除这些项目,您可以从中获取项目,直到它为空(while-循环)。

要从后台线程更改UI元素,您需要使用Dispatcher,请参阅我提供的线程模型链接以获取有关该主题的帮助。