我想將ObservableCollection複製到ObservableCollection派生類型中,並且我想保留CollectionChanged事件。如何克隆ObservableCollection <T> .CollectionChanged事件?
到目前爲止,我有:
public class PartitionCollection : ObservableCollection<AislePartition>
{
public PartitionCollection(ObservableCollection<AislePartition> other)
: base(other)
{
}
// ...
protected override void InsertItem(int index, AislePartition item)
{
// Important custom logic runs here
if (/* */)
base.InsertItem(index, item);
else
Merge(item);
}
protected void Merge(AislePartition item)
{
// ...
}
}
它複製收集罰款,但我確實需要得到CollectionChanged事件了。
這樣做的任何方式? 感謝
編輯:
前: 後:
使用這種特殊的構造函數的代碼:
private static void OnSourceChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
AisleSelection aisleSelect = args.NewValue as AisleSelection;
if (aisleSelect.Partitions == null)
aisleSelect.Partitions = new PartitionCollection();
else
aisleSelect.Partitions = new PartitionCollection(aisleSelect.Partitions);
...
}
基本上我想要做的就是更換ObservableCollection與我的PartitionCollection重寫了幾個關鍵成員。 ObservableCollection以序列化的形式從服務器傳遞給我,因此我無法直接使用它。
你所說的「克隆事件」呢? – ken2k 2012-08-10 15:57:12
我的意思是我需要將所有處理程序複製到一個新事件中,並丟棄舊事件。在C++中this.CollectionChangedEvent = std :: move(other.CollectionChangedEvent)。但是,這不是C++ :( – 2012-08-10 16:24:05