2010-11-14 37 views

Respuesta

16

hacer esto:

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

Esto creará una colección observable pero los elementos siguen apuntando a los elementos originales. Si necesita los elementos para apuntar un clon en lugar de los elementos originales, debe implementar y luego llamar a un método de clonación.

ACTUALIZACIÓN

Si intenta añadir a una lista y luego la colección observable tener la lista original, basta con crear la ObservableCollection pasando la lista original:

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

Gracias ... Pero mi verdadero problema es que tengo una colección observable ... Al agregar un nuevo item to it ... no se refleja en UI. Entonces, lo que estoy haciendo ahora es copiar toda la colección a una colección temperory ... luego agregar un nuevo elemento a la colección temporal. A continuación, vuelva a asignar la colección temporal. – Relativity

+0

He actualizado. – Aliostad

+0

Pero tengo una colección observable como entrada. Es decir .... Tengo una colección observable de 120 artículos ... Agrego un nuevo artículo. Ahora tiene 121 artículos ... Entonces la IU debería mostrar 121 artículos – Relativity

5

podría implementar ICloneable interfaz en la definición de su entidad y luego haga una copia del ObservableCollection con un molde interno. Como resultado, tendrá un clon List sin ninguna referencia a los elementos anteriores. Posteriormente, se podría crear su nueva ObservableCollection ápice el clonado List

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

La implantación se hará

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

ObservableCollection<YourEntity> clonedCollection = new ObservableCollection<YourEntity>(clonedList); 
Cuestiones relacionadas