我有一個WPF(.Net 4)ListView用於導航本地Windows目錄。它顯示當前目錄的內容,名稱和大小以及所有內容。但是,在某些目錄中,它顯示的第一個元素顯示兩次。例如,在目錄「D1」中,我有子目錄「W」,「X」,「Y」和「Z」。儘管綁定的實際數據(一個ThreadObservableCollection)沒有重複,但ListView會說「W W X Y Z」。當包含它的對象被創建時,ThreadObservableCollection最初是空的,在後臺線程上找到子目錄和文件,然後將它們放入集合中。數據綁定ListView中的第一項有時會被複制?
我不知道如何調試,因爲它純粹出現在演示區域,我擔心它可能是框架本身的錯誤。它不會出現在每個目錄中,但似乎(某種程度上)是可重複的,但它確實存在某種模式,儘管我尚未找到任何顯着的特徵。如果它確實發生,它也總是第一個入口。
我也嘗試過監聽ThreadObservableCollection的CollectionChanged事件,但它只會在每個項目發生變化時觸發一次,我會看到提供的值以確保沒有重複項(它們沒有重複項) T)。
我還附加了一個DebugConverter(見下文)TextBlock包含所示的(子)目錄的名稱,它確實顯示重複的值。所以在ListView中肯定有兩個實際的行,後面跟着相同的項目,但我仍然不知道爲什麼。
我很感激任何可能出錯或甚至如何嘗試找出它認爲它必須複製第一個條目的建議。
首先,謝謝!按照粗略的順序提到它:ValueConverter有一個好主意,我希望我能想到,但綁定時的實際集合是空的 - 事物在後臺加載,然後集合告訴ListView進行更新。沒有DataTemplateSelector,沒有觸發器會影響ListView中的任何內容,除非我完全忘記了自己的代碼。有後臺線程,是的,但無論如何WPF中無法觸及UI;只有一個發現目錄/文件放在列表中。 – JustABill 2010-10-31 01:11:33
回覆後評論編輯:這裏的代碼相當複雜;發佈整個相關部分將採取頁面和頁面。有沒有你感興趣的特定部分? ListView的定義還是什麼?但我會嘗試TextBlock調試轉換器。 – JustABill 2010-10-31 17:35:07
顯然我不能編輯該評論,所以我只是試過。它確實顯示重複,至少證實有兩個獨特的TextBlocks由於某種原因被附加到相同的項目。所以在集合和ListView之間的某個地方它會被重複。 – JustABill 2010-10-31 17:41:25