【发布时间】:2014-05-06 18:32:45
【问题描述】:
我将DataGrid 的ItemsSource 属性绑定到我的ViewModel 中的一个属性。然后我创建一个ICollectionView 并使用DataGrid 的项目源创建一个默认视图,如下所示:
_displayItemsView = CollectionViewSource.GetDefaultView(_displayItems);
其中_displayItems 是List,_displayItemsView 是ICollectionView。
现在我遇到的问题是我允许用户像这样过滤数据网格:
_displayItemsView.Filter = delegate(object item)
{
DISPLAY_ITEM displayItem = (DISPLAY_ITEM)item;
if ((displayItem.RETAIL_ITEM_DPCI.ToString().ToUpper().Contains(value.ToUpper()))
.
.
.
这在大多数情况下都很好用,但如果用户当前正在编辑或在DataGrid 中添加一行,ICollectionView 会引发未处理的异常。我应该如何去检测是否:
-
DataGrid当前正在修改或 -
ICollectionView不是处于过滤状态?
感谢任何指导,我对想法持开放态度。谢谢!
【问题讨论】:
-
这个异常会有一个 message 属性。邮件内容是什么?
-
@GarryVass 消息是“在 AddNew 或 EditItem 事务期间不允许‘过滤’。”
标签: c# wpf datagrid filter icollectionview