Sto creando un piccolo strumento di gestione delle scorte per uso privato.
Ho diverse visualizzazioni, che richiedono filtri simili ma diversi. Ad esempio, ho un elenco di "scorte correnti" in cui posso filtrare per fornitore, gruppo di prodotti e nome. Ho di nuovo la stessa lista ma con filtri aggiuntivi per alcune bandiere booleane. Creerò una piccola vista statistica in cui avrò bisogno di tutti i filtri citati e di un intervallo di date più simile.
Un ultimo, ma non meno importante, sto creando una piccola esportazione csv in cui ho requisiti simili a quelli della vista statistica.
Non è molto, ma abbastanza da pensare a un'architettura decente. Se lo fai bene su piccola scala, è probabile che lo faccia nei progetti più grandi.
Uso WPF con MVVM.
Finora ho pensato ad alcuni modi per affrontare il mio problema:
-
Filtro individuale per ogni vista: è ovviamente la variante più flessibile, ma comporta anche il massimo del lavoro se viene modificato qualcosa riguardante i filtri.
-
Generatore di filtri: un controllo viene generato in base alla configurazione, suona bene ma ho perso la flessibilità dello styling del filtro in base alla vista (potrei aggiungerlo alla configurazione, ma mi perderebbero comunque i vantaggi di xaml) e non posso davvero visualizzarlo in anteprima in xaml durante la progettazione.
-
Creazione di un singolo ViewModel che contiene tutti i possibili filtri e controlli + ViewModels per ogni tipo di filtro (Checkbox, Combobox, Textbox). Questo approccio permetterebbe semplicemente di modellare il filtro in xaml usando i controlli del filtro per ogni vista mentre si assorbe la VM del filtro in un'implementazione.
Per me l'opzione 3. sembra preferibile, ma come non ho mai fatto nulla allo stesso modo, quindi sto cercando un feedback su come un tale problema viene solitamente affrontato o se esiste qualche schema correlato.