Actualmente estoy usando una colección observable para almacenar mis objetos de datos para un ListView. Agregar nuevos objetos a la colección funciona bien, y la lista se actualiza correctamente. Sin embargo, cuando intento cambiar una de las propiedades de un objeto en la colección, listView no se actualizará correctamente. Por ejemplo, tengo una colección observable DataCollection. IntentoListView no se actualizó correctamente con ObservableCollection
_DataCollections.ElementAt(count).Status = "Active";
Realizo este cambio antes de una operación prolongada debido a la presión de un botón. ListView no reflejará el cambio. Entonces agrego myListView.Items.Refresh()
;. Esto funciona, sin embargo, el ListView no se actualiza hasta que el método button_click esté completo, lo cual no es bueno para entonces. Por ejemplo:
button1_Click(...)
{
_DataCollections.ElementAt(count).Status = "Active";
myListView.Items.Refresh();
ExecuteLongOperation();
_DataCollections.ElementAt(count).Status = "Finished";
myListView.Items.Refresh();
}
El estado nunca Ir a "Activo", que irá directamente a "Terminado" después de que el método se completa. También he intentado usar un despachador de la siguiente manera:
button1_Click(...)
{
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
(NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = "Active"; myListView.Items.Refresh(); });
ExecuteLongOperation();
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
(NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = "Finished"; myListView.Items.Refresh(); });
}
Sin embargo, eso no parece funcionar correctamente tampoco. Cualquier consejo o idea sería apreciado.
necesito mucho tiempo para encontrar la implementación correcta del método Affecting_PropertyChanged ... solo necesita una línea: 'MyBase.OnCollectionChanged (New NotifyCollectionChangedEventArgs (NotifyCollectionChangedAction.Reset))' y recomiendo sobrescribir InsertItem y RemoveItem de ObservableCollection, porque SetItem no lo hizo no funciona para mí –
@Felix, sí, había más. La implementación de la clase tiene más de 800 líneas. Dije que había publicado un código parcial, principalmente para dar una idea general. –
Escribí esto para otras personas que encuentran esta publicación y no saben cómo implementar estas líneas de código. No fue una corrección, solo una extensión para que esto funcione. :) pero ¿por qué tu clase tiene una longitud de 800 líneas? Realmente me gustaría ver la implementación completa de tu clase. –