【问题标题】:Only Displaying a subset of items in Datagrid WPF C#仅在 Datagrid WPF C# 中显示项目的子集
【发布时间】:2019-03-19 16:28:50
【问题描述】:

所以这不是一个真正的问题,而是我过去 3 天遇到的问题的解决方案,欢迎任何改进。所以我有一个显示所选产品的数据网格,每个产品还可以有称为成分的子项目,这些成分应该添加到集合中但不显示给用户。

我为此提出的解决方案如下。注释掉的 where 子句是我的第一次尝试。

public ObservableCollection<ProductSaleTransaction> gProductSale = new ObservableCollection<ProductSaleTransaction>();        
        public ObservableCollection<ProductSaleTransaction> ProductSaleCollection
        {
            get { return gProductSale/*.Where(s => s.category != "Ingredients").ToObservableCollection<ProductSaleTransaction>()*/; }
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {    
                    dgProductTchSale.ItemsSource = ProductSaleCollection;
                    ProductSaleCollection.CollectionChanged += ProductSaleCollection_CollectionChanged;
        }
        private void ProductSaleCollection_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
                 ICollectionView view = CollectionViewSource.GetDefaultView(ProductSaleCollection);
                    view.Filter = new Predicate<object>(filterIngredient);
        }
public bool filterIngredient(object item)
{
        var vaitem = (ProductSaleTransaction)item;
        if (vaitem == null)
            return false;
        else
        {
            bool it = false;
            it = vaitem.category != "Ingredient";
            return it;          
        }                        
}

这会导致添加到集合中的所有项目,但只有不属于成分类别的项目才会显示给用户。

这是我想出的解决项目的自动过滤问题,我想用所有下游代码保存到数据库中,但不向用户显示它们。

【问题讨论】:

  • 鼓励人们回答自己的问题,但应遵循我们的问答格式。这允许其他人搜索问题并发布替代答案。在“问题”字段中发布演示问题的代码,并在“答案”字段中发布您的答案。大约一天后,您可以选择自己的答案。
  • 感谢@DourHighArch 会记住这一点。

标签: c# .net wpf xaml


【解决方案1】:

ICollectionView 的过滤器在其基础集合添加/删除项目时自动评估。因此,您无需在每次集合更改时创建新的ICollectionView

改为移动线条

ICollectionView view = CollectionViewSource.GetDefaultView(ProductSaleCollection);
view.Filter = new Predicate<object>(filterIngredient);

Window_Loaded 本身并删除ProductSaleCollection_CollectionChanged 事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2018-09-06
    • 1970-01-01
    • 2017-05-12
    相关资源
    最近更新 更多