重复绑定

时间:2012-08-26 20:02:41

标签: wpf multithreading treeview bind

您有一个绑定到ObservableCollectionEx集合的TreeView。 我的应用程序是多线程的,有时我在TreeView中看到重复的条目。

我的treeView看起来像这样:

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

,绑定项源为:

ObservableCollectionEx<Title>

实际上它发生在Title拥有的Subtitle类中:

ObservableCollectionEx<Subtitle> Subtitles

标题更新通过委托

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

如何防止物品被欺骗?

1 个答案:

答案 0 :(得分:0)

在添加项目之前,只需添加一项检查以查看该项目是否已存在

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

如果多个线程可以访问集合,那么在修改集合时可能还需要锁定集合。