簡體   English   中英

防止在ObservableCollection.CollectionChanged事件上添加新項目

[英]Prevent adding the new Item on ObservableCollection.CollectionChanged event

我需要檢查一些條件,然后決定是否將新項目添加到我的收藏夾中,無論如何我是否可以阻止添加到我的CollectionChanged事件中,或者現在為時已晚? 實際上,我可以修改新項目,但由於運行時異常而無法將其從NewItems集合中刪除:

    protected void MyFilter(object sender, NotifyCollectionChangedEventArgs e)
    {                   
         f (e.Action == NotifyCollectionChangedAction.Add)
         {
             foreach (Item item in e.NewItems)
             {
                 if (!Item.CanBeAdded())
                 {
                      //Prevent adding the Item !
                 }
             }             
        }
    }

好了,這里的問題是它已經添加到集合中了。 如果我遵循此操作的唯一方法是從集合中刪除它。 但這會重新觸發您創建的MyyFilter訂閱。

如果此集合綁定在網格上或可以從UI創建項目的任何地方,那么我建議您創建一個自定義的可觀察集合。

基本代碼就是這樣。

public class MyObservableCollection<T> : ICollection<T>
, INotifyCollectionChanged
, INotifyPropertyChanged
{
}

在ICollection的Add方法上實現驗證邏輯。

如果您願意,只需繼續復制此家伙的實現即可。

暫無
暫無

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

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