Domanda

Ho creato un'app utilizzando il WPF di Microsoft. Gestisce principalmente la lettura e l'input dei dati, nonché associare le relazioni tra dati all'interno di parametri specifici.

Come principiante totale ho preso una cattiva decisione di progettazione (non tante decisioni quanto usando la prima cosa che ho avuto al lavoro) ma ora ho capito meglio WPF sto ottenendo l'impulso di rifactare il mio codice con migliori principi di progettazione.

Ho avuto diversi problemi, ma immagino che ognuno meriti la propria domanda per la chiarezza. Qui sto chiedendo modi adeguati per gestire i dati stessi. Nell'originale ho avvolto ogni riga in un oggetto quando sono entrato dal database (usando Linq a SQL) in qualche modo come record attivo solo non attivo o persistenza (ogni istanza dell'app aveva la sua parte di gestione dei dati).

L'app ha subunità che gestiscono diversi aspetti. Tuttavia, come è stato configurato, ha caricato tutto quando è iniziato. Questo crea diversi problemi, ad esempio spesso non sarebbe necessario caricare una parte a meno che non lavorassimo specificamente con quella parte, quindi non ho una qualche forma di caricamento pigro. Inoltre, c'erano problemi con la persistente interiore perché potresti creare un nuovo oggetto/riga in un aspetto e forse impostare una relazione tra esso e un oggetto diverso, ma il nuovo oggetto non sarebbe apparso fino a quando il programma non fosse stato riavviato.

La persistenza tra le istanze dell'app non sarà un grosso problema a causa della piccola quantità di persone che utilizzano il programma.

Mentre potrei risolvere questo ora usando trucchi sporchi, preferirei refactoring del programma e farlo elegantemente, ora la domanda è come. So che ci sono diversi modi e alcuni mi vengono in mente:

1) Ogni aspetto del programma è il suo UserControl che è ricaricato/istanziato ogni volta che navighi verso di esso. Questo ti assicura di caricare solo i dati di cui hai bisogno e ottieni un po 'di persistenza. Il server DB situato sulla stessa LAN e le tabelle è piccolo, quindi non dovrebbe essere un grosso problema. Il minor svantaggio è che dovresti ricordare lo stato di ogni aspetto in modo da non iniziare sempre da principianti.

2) Avere un oggetto di tipo ViewModel a livello di base dell'app con caricamento pigro e qualche tipo di timeout. Vorrei quindi procurarmi questo oggetto lungo l'albero visivo per garantire che ogni aspetto stia ottenendo i suoi dati dalla stessa istanza

3) Livello dati record semi attivo con metodi di carico statico.

4) Qualche altra idea

Qual è il modo più pratico in WPF, cosa assume MVVM?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top