对非关联对象执行CollectionChanged事件

本文关键字:CollectionChanged 事件 执行 对象 关联 | 更新日期: 2023-09-27 18:02:33

我有两个ObservableCollection对象和obj1已附加到集合更改事件。Obj1由Obj1 = obj2从obj2得到一个值。当我在obj2上添加任何项时,它执行对象1的collection changed事件。我不明白为什么会发生这种事。

 public MainWindow()
    {
        InitializeComponent();
        ObservableCollection<int> obj1 = new ObservableCollection<int>();
        ObservableCollection<int> obj2 = new ObservableCollection<int>();
        obj1 = obj2;
        obj1.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(obj1_CollectionChanged);
        obj2.Add(1);

}

    void obj1_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
        MessageBox.Show("Testing");
    }

对非关联对象执行CollectionChanged事件

obj1和obj2引用同一个对象。上面的代码在内存中创建了两个对象,但是

这一行
obj1 = obj2;

将obj1的引用改为obj2所引用的对象。这意味着CollectionChanged事件注册在obj1和obj2引用的对象上。

obj1 = obj2不会给您obj1中obj2的副本。在这行中,你说"obj1请指向与obj2相同的ObservableCollection"。之前附加到obj1的ObservableCollection将被销毁,之后两个变量都指向相同的对象。

如果你想要一个副本,创建一个新的ObservableCollection并填充另一个集合

obj1 = new ObservableCollection(obj2);

您只有一个ObservableCollection,因为您通过分配obj2的引用来覆盖变量obj1的引用。

代码:

obj1 = obj2;

因为两个变量都指向同一个ObservableCollection。在赋值之后,如果您使用变量obj1obj2来调用方法或在ObservableCollection上注册事件,则是相同的。

相关文章:
  • 没有找到相关文章