gpt4 book ai didi

c# - 取消可观察集合上的集合更改事件

转载 作者:太空宇宙 更新时间:2023-11-03 17:04:16 24 4
gpt4 key购买 nike

如何取消可观察集合上的集合更改事件?当我的集合发生变化时,它会调用第三方 dll 上的方法。这些方法可能会失败,也可能不会失败。

如果他们失败了,我不想将项目添加到集合中或从集合中删除。从名称上看,似乎是在添加或删除某些内容后触发了集合更改事件,但我该如何实现我的功能?

最佳答案

为时已晚,但它可能对其他人有帮助:

class ExtendedObservableCollection<T> : ObservableCollection<T>
{
private bool _suppressNotification = false;

public bool AllowNotifications { get { return _suppressNotification; } }

protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
if (!_suppressNotification)
base.OnCollectionChanged(e);
}

protected override void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (!_suppressNotification)
base.OnPropertyChanged(e);
}

public void ActivateNotifications()
{
_suppressNotification = false;
}

public void DesactivateNotifications()
{
_suppressNotification = true;
}

public void AddRange(IEnumerable<T> list)
{
if (list == null)
throw new ArgumentNullException("list");

_suppressNotification = true;

foreach (T item in list)
{
Add(item);
}
_suppressNotification = false;
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add));
}


}

关于c# - 取消可观察集合上的集合更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8308121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com