0

こんにちは、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

Titles の更新はデリゲートを通じて行われます

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

アイテムがだまされないようにするにはどうすればよいですか?

4

1 に答える 1

0

追加する前に、アイテムがすでに存在するかどうかを確認するためのチェックを追加するだけです。

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

コレクションに複数のスレッドからアクセスできる場合は、コレクションの変更中にコレクションをロックするための何かが必要になる可能性があります。

于 2012-08-27T12:54:56.317 に答える