2010-11-14 17 views
9

कॉपी करने के लिए मैं एक ही ObservableCollection कोकैसे नमूदार संग्रह

Observablecollection<A> aRef = new Observablecollection<A>(); 
bRef = aRef(); 

इस मामले में दोनों बिंदु है ... मैं एक अलग प्रतिलिपि कैसे करूं?

उत्तर

16

यह करें:

// aRef being an Observablecollection 
Observablecollection<Entity> bRef = new Observablecollection<Entity>(aRef); 

यह एक नमूदार संग्रह पैदा करेगा लेकिन आइटम अभी भी मूल आइटम ओर इशारा करते हैं। यदि आपको मूल वस्तुओं की बजाय क्लोन को इंगित करने के लिए आइटमों की आवश्यकता है, तो आपको एक क्लोनिंग विधि को कार्यान्वित करने और फिर कॉल करने की आवश्यकता है।

अद्यतन

आप एक सूची में जोड़ने के लिए और फिर नमूदार संग्रह मूल सूची है कोशिश करते हैं, सिर्फ मूल सूची पारित करके ObservableCollection बनाएँ:

List<Entity> originalEnityList = GetThatOriginalEnityListFromSomewhere(); 
Observablecollection<Entity> bRef = new Observablecollection<Entity>(originalEnityList); 
+0

धन्यवाद ... लेकिन मेरी असली मुद्दा मैं एक नमूदार संग्रह है ... जब मैं एक नया जोड़ने है आइटम .. यह यूआई में प्रतिबिंबित नहीं हो रहा है। तो अब मैं जो कर रहा हूं वह पूरे संग्रह को एक समशीतोष्ण संग्रह में कॉपी कर रहा है ... फिर अस्थायी संग्रह में नया आइटम जोड़ें। फिर अस्थायी संग्रह वापस वापस असाइन करें। – Relativity

+0

मैंने अपडेट किया है। – Aliostad

+0

लेकिन मेरे पास इनपुट के रूप में देखने योग्य संग्रह है। हां .... मेरे पास 120 वस्तुओं का एक अवलोकन संग्रह है..मैं इसमें नया आइटम जोड़ता हूं .. अब इसमें 121 आइटम हैं ... फिर यूआई को 121 आइटम – Relativity

5

आप ICloneable को लागू कर सकता है आप इकाई परिभाषा में इंटरफेस और फिर एक आंतरिक कलाकार के साथ ObservableCollection की एक प्रति बनाते हैं। नतीजतन आपके पास पुरानी वस्तुओं के संदर्भ के बिना List क्लोन होगा। तो फिर तुम बना सकते हैं अपने नए ObservableCollection क्लोन कण List

public class YourEntity : ICloneable { 
    public AnyType Property { get; set; } 
    .... 
    public object Clone() 
    { 
     return MemberwiseClone(); 
    } 
} 

कार्यान्वयन होगा

var clonedList = originalObservableCollection.Select(objEntity => (YourEntity) objEntity.Clone()).ToList(); 

ObservableCollection<YourEntity> clonedCollection = new ObservableCollection<YourEntity>(clonedList); 
संबंधित मुद्दे