Tengo una colección observable…SelectableDataContext<T>..Y en la clase genérica SelectableDataContext<T> es…tener dos variables miembro privadas

  1. Privado T elemento.
  2. Private bool isSelected.

Cuando la propiedad IsSelected cambios…Mi colección cambiado la propiedad no es de disparo .

Creo que debería fuego…porque es Reset en INotifyCollectionChangedAction.

OriginalEl autor Relativity | 2010-12-21

3 Comentarios

  1. 31

    Esta es una vieja cuestión, sino para el beneficio de cualquier persona que pueda venir a través de esta a través de una búsqueda como yo:

    NotifyCollectionChangedAction.Reset significa «el contenido de La colección cambiado dramáticamente». Uno de los casos donde el evento de Restablecimiento se plantea es cuando usted llame Clear() en el subyacente de la colección observable.

    Con el evento de Restablecimiento, usted no consigue la NewItems y OldItems colecciones en el NotifyCollectionChangedEventArgs parámetro.

    Esto significa que usted es mejor que use el «remitente» del evento para obtener una referencia a la modificación de la recopilación y el uso que directamente, es decir, asumir que es una nueva lista.

    Un ejemplo de esto podría ser algo como:

    ((INotifyCollectionChanged)stringCollection).CollectionChanged += new NotifyCollectionChangedEventHandler(StringCollection_CollectionChanged);
      ...
    
    void StringCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        switch (e.Action)
        {
            case NotifyCollectionChangedAction.Add:
                foreach (string s in e.NewItems)
                {
                    InternalAdd(s);
                }
                break;
    
            case NotifyCollectionChangedAction.Remove:
                foreach (string s in e.OldItems)
                {
                    InternalRemove(s);
                }
                break;
    
            case NotifyCollectionChangedAction.Reset:
                ReadOnlyObservableCollection<string> col = sender as ReadOnlyObservableCollection<string>;
                InternalClearAll();
                if (col != null)
                {
                    foreach (string s in col)
                    {
                        InternalAdd(s);
                    }
                }
                break;
        }
    }

    Muchos de los debates sobre este evento de Restablecimiento aquí: Cuando el Despeje de una ObservableCollection, no Hay Ningún elemento en el correo.OldItems.

    MS ha cambiado la definición de Reset. Ahora significa: «El contenido de la colección fue liquidado». docs.microsoft.com/en-us/dotnet/api/…

    OriginalEl autor G. Lombard

  2. 2

    Hay una diferencia entre INotifyCollectionChanged y INotifyPropertyChanged.

    Cuando un valor de un propery en un objeto de cambios, se debe notificar a los demás utilizando INotifyPropertyChanged implementación de la interfaz.

    Por otro lado, cuando number of items o items themselves cambio en una colección, debe dejar saber a los demás utilizando INotifyCollectionChanged aplicación.

    Ahora, en su caso, el valor de una propiedad de un objeto en su colección de cambios. Que se supone que es para recaudar PropertyChanged evento, no CollectionChanged evento.

    Pero ¿qué es el RESET ?

    OriginalEl autor decyclone

  3. -1

    Colección cambiado, será despedido si y sólo si modifica la colección que es a través de la Adición de un nuevo Artículo o la Eliminación de un elemento existente en la colección.

    OriginalEl autor TalentTuner

Dejar respuesta

Please enter your comment!
Please enter your name here