Quiero tener el diccionario que sería 'Observable' para lanzar eventos cuando el elemento cambia (Eliminar o Agregar).Diccionario observable que no se comporta como se esperaba
En otra clase, he creado dicho diccionario y he configurado el enlace en ListBox.ItemsSourseProperty
.
El enlace funciona bien. Puedo ver los artículos.
Pero algo está mal: el evento PropertyChanged
siempre es nulo.
¿Alguien puede ayudar?
¡Gracias de antemano!
class ObservableDictionary<TKey, TValue> :
Dictionary<TKey, TValue>,
INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public new void Remove(TKey obj)
{
base.Remove(obj);
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Remove"));
}
}
}
pregunta similar: http://stackoverflow.com/questions/1098663/general-observable-dictionary-class-for-databinding-wpf-c –
tenga cuidado al usar la nueva palabra clave ... porque ese método solo será se llama cuando el objeto tiene un alcance y se envía a ObservableDictionary. Como la mayoría del modelo de vinculación de framework lo convertirá en IEnumerable, Add & Remove seguirá llamando a la implementación downstream en el diccionario base. En su lugar, escribiría su clase como una clase contenedora que tiene un diccionario interno para el almacenamiento y luego implementaría las interfaces IDictionary e INotifyCollectionChanged y los métodos correspondientes. –
public class Foo { public void Bar() { Console.WriteLine ("Prueba 1"); }} Foo2 clase pública: Foo { pública nueva barra void() { Console.WriteLine ("Prueba 2"); } } var f = new Foo2(); f.Bar(); ((Foo) f). Bar(); Devuelve Prueba 2 Prueba 1 –