2009-01-30 7 views
5

Lorsque je déplace un contrôle de la boîte à outils vers la surface de conception Visual Studio 2008 WPF, il définit une marge en fonction de l'endroit où je l'ai déposé et d'une valeur par défaut Taille.Comment empêcher le concepteur VS WPF de mettre des marges sur chaque objet de la boîte à outils

Y at-il un moyen d'empêcher VS de les régler? Lorsque je dépose un contrôle sur un panneau de pile, je souhaite qu'il soit transféré vers les contrôles existants dans le panneau.

Merci!

+0

En ce moment, il est également question de la merde. – Will

Répondre

3

Je n'ai jamais trouvé un moyen d'empêcher cela. Je tape juste le XAML à la place.

EDIT:

je l'ai écrit il y a les près de trois ans au-dessus. En attendant, il semblerait que l'expérience de conception s'est beaucoup améliorée. Alors que le concepteur ajoute encore des marges codées en dur si vous faites glisser-déposer, il existe des moyens de supprimer ces marges sans avoir à le faire à la main.

Voici un lien vers un article qui illustre comment utiliser les outils de conception dans Visual Studio 2010 pour mettre en forme un formulaire sans avoir à taper de code XAML. (Malgré le titre, il est sur WPF.)

Layout Techniques for Windows Form Developers

+0

Même ici. Le concepteur WPF est bien trop lent et buggé à mon goût. – Andy

+0

Je suis d'accord. Le concepteur a mieux réussi à fournir un affichage représentatif de ce que le xaml dénote, mais je ne sais pas s'il est même possible de fournir l'expérience de glisser/déposer génial du concepteur de winforms étant donné le modèle sous-jacent radicalement différent. –

+1

Je ne vois aucune raison pour que cela * ne soit pas possible. Vous pouvez faire glisser-déposer dans ASP.NET dans le concepteur ou le balisage. Cela ne semble pas long de faire la même chose dans WPF. Mais pour une raison quelconque, Microsoft n'en a pas fait une priorité. –

0

Lorsque je laisse tomber un contrôle dans un StackPanel, il n'ajoute pas de marges, il « coule » avec le reste.

Les contrôles que vous déposez sur la surface de conception ont une marge par défaut car c'est ainsi qu'elle sait où elle est placée. Ce que je fais généralement est de créer une grille et de définir sa marge là où je le veux, puis de créer des colonnes et des lignes pour y placer des contrôles. Je laisse tomber mes autres contrôles qui vont ajouter des marges qui ne sont généralement pas ce que je veux. Après avoir placé tous mes contrôles dans ma grille, raisonnablement placé, je passe en vue XAML et soit supprime complètement la marge (ce qui provoque un contrôle comme un bouton pour remplir tout l'espace), soit rend la marge de 5, joli rembourrage autour du contrôle.

Ligne de fond ... et c'est particulièrement vrai avec le développement de Silverlight, vous devez vous habituer à manipuler le XAML directement. C'est la seule façon d'obtenir la mise en page exactement où vous le souhaitez. C'est mon opinion et la plupart des gens dans mon magasin qui font du développement WPF/Silverlight.

0

Malheureusement, il ne semble pas y avoir de moyen de le faire.

La taille par défaut est définie comme résultat de la manipulation de la taille de votre contrôle par le concepteur. Lorsque vous augmentez la largeur et/ou la hauteur d'un contrôle, le concepteur interprète vos actions comme une demande de création du contrôle qui spécifie la largeur et/ou la hauteur.

Une situation similaire est rencontrée avec les marges. Lorsque vous modifiez la position de votre contrôle dans le concepteur, il modifie les propriétés pour obtenir la mise en page que vous avez créée. Dans le cas de la plupart des conteneurs, la solution la plus simple consiste à modifier les marges afin d'atteindre la position souhaitée, comme vous l'avez déjà indiqué, la solution simple n'est pas toujours la plus désirée.

Personnellement, je préfère n'utiliser que l'éditeur XAML et n'intervient que de temps en temps dans le Concepteur WPF lorsque je veux voir la disposition actuelle. J'ai aussi tendance à préférer l'utilisation de la Grille pour mettre en page la plupart de mes fenêtres/contrôles car elle offre la plus grande flexibilité non seulement pour le dimensionnement et le positionnement, mais pour d'autres tâches/fonctionnalités telles que les animations, transformations, etc.