2009-06-04 7 views
10

J'ai récemment découvert que je pouvais utiliser les contrôles utilisateur pour réduire la taille du fichier .xaml de mon application principale. Je suis nouveau sur WPF et j'ai réalisé que le XAML de mon application devenait très long, très rapide et difficile à parcourir.Quel est le moyen le plus simple de découper de gros fichiers XAML dans mon application?

L'utilisateur contrôle-t-il la meilleure façon de résoudre ce problème (par exemple, de nombreuses commandes utilisateur et leurs modèles dans une bibliothèque de contrôle séparée)?

Comment gérez-vous votre XAML?

Merci d'avance!

Répondre

9

Vous avez raison de diviser les éléments en commandes séparées pour réduire la taille des fichiers xaml individuels. L'autre moyen de réduire la taille des fichiers est d'utiliser ResourceDictionaries. Lorsque vous divisez vos styles, modèles et ressources dans Separate ResourceDictionaries, il peut réduire considérablement la taille des fichiers xaml de votre fenêtre et de votre contrôle. Une fois que les éléments sont divisés, vous pouvez utiliser la fonctionnalité MergedDictionaries pour accéder aux styles et aux modèles, où que vous soyez. Si une ressource spécifique est utilisée dans plusieurs fenêtres et contrôles, vous pouvez également fusionner ResourceDictionary dans les ressources App.xaml, ce qui permet de l'utiliser à partir de n'importe quel emplacement de la solution.

Personnellement, j'aime garder chaque fichier XAML à environ 300 lignes ou moins, après ce point, je vois s'il y a une meilleure façon de l'organiser. Here est quelques informations supplémentaires et des conseils sur la façon de garder vos ressources organisées.

+0

Je vais me pencher sur l'utilisation de ResourceDictionaries. Je savais qu'il devait y avoir une forme d'organisation que je négligeais. Merci beaucoup pour votre aide. – stevosaurus

+0

Le lien d'information d'ajout est mort, mais [ici] (http://web.archive.org/web/20100629015119/http://groups.google.com.au/group/wpf-disciples/web/wpf-and- xaml-coding-guidelines) il est dans le WayBackMachine. –

1

Aussi pour le thème/style évitez de mettre dans les styles au niveau du contrôle/individuel, ayez plutôt le theme.xaml gérer le skinning directement, de cette façon vous n'avez pas l'information de style à l'intérieur du Xaml.

-à-dire <MyControl Style="{StaticResource myControlStyle}"/> pourraient être évités en appliquant directement le style sur MyControl dans le fichier thème, de cette façon vous n'avez <MyControl/> dans le Window.xaml

+0

C'est ainsi que je le fais actuellement avec mes commandes utilisateur. Merci beaucoup! – stevosaurus

1

Les contrôles utilisateur sont un très bon moyen d'isoler le code de la fenêtre principale. En plus de désencombrer, ils offrent également d'autres avantages tels que la modularisation du code et la fourniture d'une interface limitée dans cette section de code, ce qui contribue à améliorer la maintenabilité et aide à prévenir le code spaghetti.

En plus de cela, DataTemplates peut également être utile. Par exemple, supposons que vous ayez un tas de champs à saisir et que tous ces champs aient des étiquettes. Dans ce cas, vous pouvez créer une classe avec deux propriétés, une pour l'étiquette et une pour la valeur de ce champ. Vous pouvez ensuite créer un DataTemplate pour cette classe qui lie l'étiquette à un TextBlock et la valeur à un TextBox. Si vous souhaitez aligner toutes les étiquettes, vous pouvez créer une grille SharedSizeScope. Après cela, vous pouvez créer une ObservableCollection de cette classe, remplir la collection avec des étiquettes et des valeurs, puis définir la ItemsSource d'un ItemsControl. Après avoir obtenu la plomberie initiale de ce processus, les formulaires de saisie de données peuvent être générés bien plus rapidement que dans WinForms.

Questions connexes