XAML数据网格过滤赢得';不要使用过滤器

XAML数据网格过滤赢得';不要使用过滤器,xaml,datagrid,observablecollection,Xaml,Datagrid,Observablecollection,我正在尝试创建一个表单,它有两个选项卡,每个选项卡上都有一个DataGrid,上面有一个不同的过滤器。我已经创建了如下过滤器: ObservableCollection<ParcelVoucherDetails> _voucherDetails = new ObservableCollection<ParcelVoucherDetails>(); CollectionView cvFreightOut = new CollectionView(_voucherDetai

我正在尝试创建一个表单,它有两个选项卡,每个选项卡上都有一个DataGrid,上面有一个不同的过滤器。我已经创建了如下过滤器:

ObservableCollection<ParcelVoucherDetails> _voucherDetails = new ObservableCollection<ParcelVoucherDetails>();

CollectionView cvFreightOut = new CollectionView(_voucherDetails);
cvFreightOut.Filter += FreightOutFilter;
dgFreightOut.ItemsSource = cvFreightOut;

CollectionView cvFreightIn = new CollectionView(_voucherDetails);
cvFreightIn.Filter += FreightInFilter;
dgFreightIn.ItemsSource = cvFreightIn;
        public bool FreightOutFilter(object o)
    {
        ParcelVoucherDetails p = o as ParcelVoucherDetails;
        if (p != null)
        {
            return (p.Type == "Freight Out");
        }
        return false;
    }

    public bool FreightInFilter(object o)
    {
        ParcelVoucherDetails p = o as ParcelVoucherDetails;
        if (p != null)
        {
            return (p.Type == "Freight In");
        }
        return false;
    }
现在,这里是它变得烦人的地方。在稍后的事件中,当我向ObservaleCollection添加项时,我可以看到过滤器按预期启动并接受或拒绝过滤器,但所有项仍然显示在两个数据网格上

我尝试过使用CollectionViewSource,但也不起作用。我能让任何过滤工作的唯一方法是跳过ObservableCollection并使用DataTable和DataView。我希望在这里避免这种情况,因为代码的其余部分使用ObservableCollection很方便


有没有人看到这真的起作用了,如果是的话,是如何起作用的?

我在头撞到墙上后终于找到了它。我现在觉得很可笑,但我必须分享解决方案:

ListCollectionView cvFO = new ListCollectionView(_voucherDetails);
cvFO.Filter += FreightOutFilter;
dgFreightOut.ItemsSource = cvFO;

ListCollectionView cvFI = new ListCollectionView(_voucherDetails);
cvFI.Filter += FreightInFilter;
dgFreightIn.ItemsSource = cvFI;
这将分别设置过滤器。显然,使用通用CollectionView而不是ListCollectionView是一个禁忌:)