¿Cómo vinculo dos listas por colección observable en VB.NET?

programación


Hola chicos

Aquí tenemos listORG con 3 campos:

Idx , Estudio , Nombre
———————————-
1 Estudio 1 Juan
2 Estudio 2 Juan
3 Estudio 3 Juan
4 Estudio 4 Juan
5 Estudio5 Feliz
6 Estudio6 Feliz
7 Estudio7 Juan
8 Estudio 8 Juan
9 Estudio9 Feliz

Aquí tenemos una lista de cuántos:

Idx, nombre, cuántos estudios
———————————————-
1 Juan 6
2 feliz 2

Entonces, si ve, la segunda lista muestra cuántos estudios hay para las personas John y Merry.

Entonces quiero programar esto mediante Observable Collection. Como quiero cualquier actualización sobre cualquiera de estas listas, actualiza la otra. Como agregar nuevo, eliminar o editar.

¿Podrías ayudarme con esto?

Lo que he probado:

De hecho, probé algunos códigos de Internet, pero no tuve suerte.

Solución 1

Aquí hay problemas con lo que quieres hacer: no puedes usar una sola ObservableCollection para dos listas diferentes, y si bien puedes colocar todos los elementos de ambas en una ObservableCollection de tipo débil y emitirlos apropiadamente cuando accedas a ella, no es así. lo mismo que tener colecciones separadas y haría que su código fuera mucho más complicado y difícil de leer/mantener.

Podría usar dos ObservableCollections, y eso funcionaría razonablemente bien, pero incluso entonces, eso solo genera un evento cuando la colección se cambia mediante una operación Agregar, Eliminar o reordenar. No obtendrá un evento cuando se cambien los miembros de un elemento de la colección: myObservableCollection(0).Name = "New name" no generará un evento.

Solución 2

Usarías un CollectionViewSource y utilizar la agrupación. Supongo que estás usando WPF. Aquí hay una muestra: Cómo: ordenar y agrupar datos usando una vista en XAML – WPF .NET Framework | Microsoft aprende[^].

Aquí hay algunas cosas más que puedes hacer con el CollectionViewSource: ColecciónViewSource | 2000 cosas que debes saber sobre WPF[^]

Aquí hay un ejemplo que usa solo código: Agrupación basada en dos o más propiedades[^]

コメント

タイトルとURLをコピーしました