Tengo un ItemsControl (no virtualizado) que vincula su ItemsSource a una ObeservableCollection de instancias de ViewModel. Ahora, una vez que se carguen las instancias de modelo de gran cantidad, todos los complementos de ViewModel deben agregarse a ese ObservableCollection. ¿Cómo puedo agregar una gran cantidad de ViewModels sin hacer que cuelgue el hilo de la interfaz de usuario?ItemsControl.ItemsSource MVVM performance
Supongo que el subproceso de la interfaz de usuario se cuelga porque cada vez que se agrega un nuevo elemento, ItemsControl necesita actualizarse y hace el diseño, etc. una y otra vez.
- ¿Debo suspender el enlace agregar todos elementos y luego reanudar? ¿Si es así, cómo?
- ¿Debo anular el ObservableCollection implementar un AddRange tan sólo el 1 CollectionChanged El evento se activa por la adición de varios artículos ? O, como alternativa, simplemente reemplace toda la colección?
- ¿O es mejor agregar cada artículo por separado y llamar al Dispatcher.Invocar por cada artículo por separado? Así que desbloquearía con frecuencia.
¿Cómo se manejan las grandes listas dinámicas que no se pueden virtualizar?
¿Qué estás usando? WPF/Silverlight? WinForms? ¿Algo más? – slugster
Debería ser obvio que no se trata de formularios de Windows porque ninguna de las clases mencionadas existe en los formularios de Windows. – bitbonk
¿hay alguna razón específica por la que su control de elementos no pueda usar la virtualización de UI? –