0
我正嘗試創建一個具有兩個選項卡的表單,每個選項卡都帶有一個DataGrid,並在其上具有不同的篩選器。我創建了過濾器這樣:XAML 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;
}
現在,這裏就是它很煩人。在後面的事件中,當我將項目添加到ObservableCollection時,我可以看到過濾器正在觸發並接受或拒絕過濾器,但所有項目仍然出現在兩個DataGrid上。
我試過使用CollectionViewSource,並且也不起作用。我可以完成任何過濾工作的唯一方法是跳過ObservableCollection,並將DataTable用於DataViews。我想避免在這裏,因爲使用ObservableCollection的其他代碼的方便。
有沒有人看到這個實際工作,如果是這樣,如何?