private async Task Filter(MemberPathFilterText memberPathFilterText) { var propertyInfo = typeof(Item).GetProperty(memberPathFilterText.MemberPath); if (propertyInfo == null) { this.CollectionViewSource.Filter = null; return; } Interlocked.Increment(ref this._filterWaitingCount); await Task.Delay(500); if (Interlocked.Decrement(ref this._filterWaitingCount) != 0) { return; } this.CollectionViewSource.Filter = o => { if (o is Item item) { return(propertyInfo.GetValue(item).ToString().Contains(memberPathFilterText.FilterText)); } return(false); }; }
private async Task Filter(MemberPathFilterText memberPathFilterText) { if (string.IsNullOrWhiteSpace(memberPathFilterText.FilterText)) { this._myRemoteOrDbDataSourceAsyncProxy.FilterDescriptionList.Remove(memberPathFilterText .MemberPath); } else { this._myRemoteOrDbDataSourceAsyncProxy.FilterDescriptionList.Add( new FilterDescription(memberPathFilterText.MemberPath, memberPathFilterText.FilterText)); } Interlocked.Increment(ref this._filterWaitingCount); await Task.Delay(500); if (Interlocked.Decrement(ref this._filterWaitingCount) != 0) { return; } this._myRemoteOrDbDataSourceAsyncProxy.FilterDescriptionList.OnCollectionReset(); this._myDataVirtualizedAsyncFilterSortObservableCollection.Clear(); }