Sto sviluppando un'applicazione wpf e io sono attualmente lottando per trovare il modo migliore per supportare uno scenario ricorrente in esso.
Questa app utilizza molte griglie. Ci sono un sacco di funzionalità che voglio includere nelle griglie, come il drag & rilascio, edizione di righe multiple, colorazione di righe condizionali, ecc. Ma allo stesso tempo, voglio che i miei oggetti dati derivino da una classe specifica orientata ai dati che non conosce alcun contesto di interfaccia utente e potrebbe essere utilizzata da un singolo modulo, con editor standalone.
Pertanto, mi piacerebbe avere una classe DataGridViewModel
che esporrà a sua volta due raccolte: Rows
come DataGridRowViewModel
e Columns
come DataGridColumnViewModel
. Il modello di visualizzazione di riga esporrà una proprietà RowData
che sarà l'oggetto di dati effettivo , mentre il modello di visualizzazione di colonna avrà un PropertyDescriptor
(da System.ComponentModel
spazio dei nomi) che indicherà quale oggetto dati campo per cui la colonna è destinata.
Puoi pensare a DataGridRowViewModel
come contenitore per l'oggetto riga "reale".
L'obiettivo è di consentire la separazione delle preoccupazioni tra le funzionalità specifiche della griglia (controllo dell'altezza delle righe, del colore, della selezione, ecc.) e le funzionalità specifiche dei dati, in modo che non sia necessario conoscere l'altro. Idealmente, un terzo componente sarà a conoscenza di entrambi e garantirà una comunicazione corretta tra i due livelli (osservando un campo dati e modificando il colore della riga in condizioni x o y, ad esempio).
Questo approccio ha senso? Che tipo di complicazioni dovrei aspettarmi da questo (problemi vincolanti, prestazioni e simili)?