簡體   English   中英

如何防止WPF列表框控件中出現重復項?

[英]How can I prevent duplicates in a WPF Listbox control?

我有以聲明方式綁定到文本框的WPF列表框控件。 列表框的ItemsSource是從XML文件構建的ObservableCollection。 添加新項目時,我可以輕松地防止列表框中出現重復條目​​,因為我可以在“添加”按鈕的Click事件處理程序中進行檢查。

但是,當在文本框(顯然顯示列表框的選定項)中將現有項的值更改為列表中已經存在的項時,我想防止這種情況,但我不知道如何做。

非常感謝您的幫助!

您可以通過派生ValidationRule來創建自己的驗證規則,並將其應用於文本框的綁定。 Validate方法中,您可以檢查重復項並返回ValidationResult為false,以防止更新綁定源。

偵聽CollectionChanged事件,並檢查集合是否已被修改(如果有任何重復項)並將其刪除。

另外,您可以查看問題及其“可觀察集合的答案”,該集合在其“項目”屬性更改時也會通知您。

編輯:

如果您不想使用我上面提到的集合,則可以確保集合的項目實現INotifyPropertyChanged並且每次將項目添加到集合時,請偵聽其PropertyChanged事件。 在處理程序中,檢查更改的屬性是否為列表框中顯示的屬性,並檢查是否有其他元素具有與此屬性相同的值。 如果找到這樣的元素,則可以將屬性的值更改為其舊值,或者完全刪除該元素,這取決於應用程序的邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM