2012-03-12 71 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. 
}