2009-06-04 8 views
10

Recentemente ho scoperto che potevo fare uso dei controlli utente per ridurre le dimensioni del file .xaml della mia applicazione principale. Sono nuovo di WPF e mi sono reso conto che XAML della mia app sta diventando molto lunga, molto veloce ed è scomoda da scorrere.Qual è il modo più semplice per suddividere i file XAML di grandi dimensioni nella mia applicazione?

Gli utenti controllano il modo migliore per risolvere questo problema (ad esempio, hanno molti controlli utente e i relativi modelli in una libreria di controlli separata)?

Come gestisci il tuo XAML?

Grazie in anticipo!

risposta

9

Sei corretto che suddividere le cose in controlli separati può aiutare a ridurre la dimensione dei singoli file xaml. L'altro modo per ridurre la dimensione dei file è utilizzare ResourceDictionaries. Quando dividi Stili, Modelli e Risorse in Risorse Risorsa separate puoi ridurre notevolmente le dimensioni dei file xaml della tua finestra e del controllo. Una volta suddiviso, puoi utilizzare la funzione MergedDictionaries per accedere agli stili e ai modelli ovunque ti servano. Se una risorsa specifica viene utilizzata in più finestre e controlli, è anche possibile unirli a ResourceDictionary nelle risorse App.xaml, consentendone l'utilizzo da qualsiasi posizione nella soluzione.

Personalmente, mi piace mantenere ogni file XAML intorno a ~ 300 o meno righe, dopo quel punto vedo se c'è un modo migliore per organizzarlo. Here alcune informazioni aggiuntive e suggerimenti su come mantenere organizzate le risorse.

+0

Verificherò l'uso di ResourceDictionaries. Sapevo che doveva esserci qualche forma di organizzazione che stavo trascurando. Grazie mille per il vostro aiuto. – stevosaurus

+0

Il collegamento alle informazioni aggiuntive è morto, ma [qui] (http://web.archive.org/web/20100629015119/http://groups.google.com.au/group/wpf-disciples/web/wpf-and- xaml-code-guidelines) è in WayBackMachine. –

1

Anche per il tema/lo stile evitare di inserire stili a livello di controllo/individuale, piuttosto che il tema.xaml gestisca direttamente lo skinning, in questo modo non si hanno le informazioni sullo stile all'interno di Xaml.

cioè <MyControl Style="{StaticResource myControlStyle}"/> potrebbero essere evitati applicando direttamente lo styling sul MyControl nel file del tema, in questo modo hai solo <MyControl/> nel Window.xaml

+0

Ecco come lo sto attualmente facendo con i miei controlli utente. Grazie mille! – stevosaurus

1

I controlli utente sono un ottimo modo per isolare il codice fuori dal finestra principale. Oltre al decluttering, offrono anche altri vantaggi, come la modularizzazione del codice e un'interfaccia limitata in quella sezione di codice, che aiuta a migliorare la manutenibilità e aiuta a prevenire il codice spaghetti.

Oltre a ciò, DataTemplates può anche essere utile. Ad esempio, supponiamo di avere una serie di campi che devono essere inseriti e tutti questi campi hanno etichette. In tal caso, puoi creare una classe con due proprietà, una per l'etichetta e una per il valore di quel campo. È quindi possibile creare un DataTemplate per quella classe che associa l'etichetta a un TextBlock e il valore a un controllo TextBox. Se si desidera allineare tutte le etichette, è possibile creare una griglia SharedSizeScope. Dopo aver fatto ciò, è possibile creare una ObservableCollection di quella classe, riempire la raccolta con etichette e valori e quindi impostare ItemsSource di un ItemsControl su di essa. Dopo aver ottenuto l'impianto idraulico iniziale, i moduli di inserimento dati possono essere generati molto più velocemente di quanto possano fare in WinForms.

Problemi correlati