2012-03-12 179 views

回答

0

你在datagrid中输入什么数据?你的每个项目是什么类型?

E.g.您可能会绑定一个Employee类实例的集合,并在DataGrid上显示员工ID和名称列。

如果是这样,则可能在EmployeeName属性或EmployeeID属性上发生重复。但可以允许EmployeeName的重复,因为任何两名员工可以有相同的Name。但是不允许使用相同的ID。

所以当输入一个ID并且你失去焦点时,该项目被添加,并且它会引发ObservableCollection.CollectionChanged事件。处理此事件并在处理程序,您可以检查是否“e.Action ==添加”,如果对现有的项目,以便执行拉姆达查询和检查的ID属性输入值....

if (e.Action == NotifyCollectionChangedAction.Add 
    && MyItems.Where(
     item => item.EmployeeID == e.NewItems[0].EmployeeID).Count() > 1) 
{ 
    //Duplicates found! 
} 

如果这对您没有帮助,请详细说明您的要求。

0

正试图在WinRT中做类似的工作,这对我有用,我认为它也应该用于WPF。与WPF类似,它或多或少都是答案。这假定您拥有的每个数据项都有一些唯一的ID(或任何唯一的值),并且所有项(集合中以及即将添加的)都具有相同的唯一ID字段。 “(duplicates.Any())”与“if(duplicates.Count()> 0)”相同“。

也可以使用“duplicates”变量链接成一行w/o;例如

if (yourCollectionOfItems.Any((item) => item.UniqueID == itemYouAreAboutToAddToCollection.UniqueID)) 
{ 
    // Do error handling here. 
}