嗨,我有一个运行异步功能并将项目(将近5000个)加载到已绑定到列表框的observablecollection上的函数,现在我希望能够在列表框中搜索,我使用此代码(以任何异步方式都无法正常工作)
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(DataList);
view.Filter = UserFilter;
private void SearchBar_SearchStarted(object sender,HandyControl.Data.FunctionEventArgs<string> e)
{
CollectionViewSource.GetDefaultView(DataList).Refresh();
}
private bool UserFilter(object item)
{
return ((item as AvatarModel).DisplayName.IndexOf(txtSearch.Text,StringComparison.OrdinalIgnoreCase) >= 0);
}
但是如果我以异步方式加载我的商品,此代码将不起作用,因为DataList为空(由于异步),我会得到nullrefrence错误,所以有什么办法可以异步方式做到这一点?
更新:
private ObservableCollection<AvatarModel> _DataList;
public ObservableCollection<AvatarModel> DataList
{
get => _DataList;
set
{
if (_DataList != value)
{
_DataList = value;
NotifyPropertyChanged("DataList");
}
}
}