Bra*_* W. 2 c# wpf filter collectionview icollectionview
我正在尝试过滤DataGrid中显示的ObservableCollection.这在第一次工作得很好,但是当我尝试再次过滤时,它使用sourcecollection而不是过滤结果.短代码示例:
ICollectionView view = CollectionViewSource.GetDefaultView(myCollection);
view.Filter = delegate(object item){
User user = item as User;
if(user != null && user.Name.ToLower().Contains(textbox.Text.ToLower())) return true;
return false;
};
Run Code Online (Sandbox Code Playgroud)
所以我想要做的只是过滤我的DataGrid中显示的项目,而不是整个集合(当然第一次使用过滤器时,它将使用整个集合).
小智 5
另一种选择是......
public void cmbYourComboBox_SelectionChanged(object sender, RoutedEventArgs e)
{
ICollectionView filteredView = CollectionViewSource.GetDefaultView(collection);
filteredView.Filter = new Predicate<object>(GetFilteredView);
dgYourDataGrid.ItemsSource = filteredView;
}
public bool GetFilteredView(object sourceObject)
{
if (HasConditionOne(sourceObject) && HasConditionTwo(sourceObject)
{
return true;
}
return false;
}
public bool HasConditionOne(object sourceObject)
{
//perform your test and evaluate the outcome
}
public bool HasConditionTwo(object sourceObject)
{
//perform your test and evaluate the outcome
}
Run Code Online (Sandbox Code Playgroud)
如果源对象满足所有必需条件,则认为适合在过滤视图中显示.
| 归档时间: |
|
| 查看次数: |
5547 次 |
| 最近记录: |