WPF。 ListBox中的项目没有ItemsSource

时间:2015-09-16 11:41:11

标签: c# wpf listbox

我将这些项目添加到ListBox;

tvProgramListBox.Items.Add(r);

在添加所有对象后,我试图将这样的项目分组;

CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(tvProgramListBox.Items);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("date");
view.GroupDescriptions.Clear();
view.GroupDescriptions.Add(groupDescription);

或者像这样;

PropertyGroupDescription groupDescription = new PropertyGroupDescription("date");
tvProgramListBox.Items.GroupDescriptions.Clear();
tvProgramListBox.Items.GroupDescriptions.Add(groupDescription);
项目中存在

date属性。但是,ListBox不会对项目进行分组。当我之前使用ItemsSource绑定时,分组工作正常。但是我的集合中有很多项目,我决定在后台线程中手动将它们添加到ListBox,以保持UI免于冻结。所以现在它没有冻结,但也没有组合:) 任何建议赞赏。感谢。

1 个答案:

答案 0 :(得分:1)

如果您想在后台主题中添加项目但仍然使用ItemsSource,则可以使用BindingOperations.EnableCollectionSynchronization来执行此操作。

使用以下语句添加:

using System.Windows.Data;

除了你的收藏之外,你还需要一个绑定引擎锁定对象:

ObservableCollection<MyType> Source = new ObservableCollection<MyType>();
object myLock = new object();

现在您可以在适当的时候启用同步。

BindingOperations.EnableCollectionSynchronization(Source, myLock);

您现在应该能够在ItemsSource上使用ListBox的同时从后台线程更新集合。

相关问题