2012-08-26 52 views
0

您好有一個綁定到ObservableCollectionEx集合的TreeView。 我的應用程序是多線程的,有時我會在TreeView中看到重複的條目。重複的綁定

我的TreeView是這樣的:

<TreeView 
     ItemsSource="{Binding Titles}" 
     Margin="3" 
     ScrollViewer.VerticalScrollBarVisibility="Auto" 
     ScrollViewer.HorizontalScrollBarVisibility="Auto" 
     Style="{StaticResource TreeViewStyle}" 
     > 

和綁定物品來源爲:

ObservableCollectionEx<Subtitle> Subtitles 

ObservableCollectionEx<Title> 

實際上它在標題擁有字幕類發生標題更新通過代理髮生

void Add_Title(object sender, TitleEventArgs e) { _titles.Add(e.Title); } 

我該如何防止項目被愚弄?

+3

請提供填充項目源代碼的多線程代碼。 –

回答

0

只需添加一個檢查,看看該項目將其添加

void Add_Title(object sender, TitleEventArgs e) 
{ 
    if (!_titles.Contains(e.Title)) 
     _titles.Add(e.Title); 
} 

如果集合可能可以通過多線程同時訪問之前已經存在與否,你可能會需要一些東西來鎖定,同時收集其也被修改。

+0

即使這*可能*不能沒有鎖定工作。 –

+1

@MattBurland你是對的,如果集合可以被不同的線程修改,那麼就應該在修改集合的時候鎖定集合。我已經更新了我的答案,但我不確定將使用什麼代碼,因爲我無法看到OP如何處理線程的問題:) – Rachel