簡體   English   中英

C#、WPF:對列表視圖中的每個元素進行處理

[英]C#, WPF: Do work on each element in a list View

我有一個帶有列表視圖控件的 WPF 應用程序。 該應用程序基本上將文件加載到列表視圖中。 然后我想遍歷每個 listview 元素,突出顯示當前行,並執行某個任務。

任務完成后,我更新另一個文件和一個帶有結果的面板,然后轉到下一個 listview 元素。

我以前在 WinForms 中做過類似的事情,但談到 WPF 時我很綠色。 我想我主要關心的是如何處理第二個線程,而不是 UI 線程。 WPF 中的線程 model 有什么不同嗎?

其次,程序本質上是一個通過 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)? 程序應該一直運行,直到按下“停止”按鈕或按下某些東西。

如果您需要有關線程 model 的信息,請參閱相應的 MSDN 頁面

由於您有一個可觀察的集合,您可以處理CollectionChanged事件,您可以查看是否已添加或刪除項目,以便您可以從工作隊列中添加或刪除那些您可以從中獲取項目直到它為空的項目( while -loop)。

要從后台線程更改 UI-Elements,您需要使用Dispatcher ,請參閱我提供的線程 model 鏈接以獲取有關該主題的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM