2015-07-23 1 views
0

Pour le xml ci-dessousComment est la marge d'un UIElement calculé

<Image Width="30px" Height="30px" Margin="1 1 1 1" /> 

La marge est de 1 1 1 1 mais l'image est au centre de l'écran (668 369 668 369). Pourquoi cela arrive-t-il? La marge ci-dessus n'est-elle pas invalide? Aussi, pour la position de n'importe quoi, vous avez juste besoin de la marge gauche et de la marge supérieure. C'est comme ça que winforms fonctionne, n'est-ce pas? Je ne comprends pas pourquoi le constructeur Thickness nécessite 4 valeurs.

+0

Qu'est-ce que le panneau parent de l'image? Par exemple. une grille pourrait juste centrer votre image, auquel cas la marge serait inutile. – Clemens

Répondre

1

Un Thickness pour Margin est le nombre de pixels de chaque bord de l'élément. Ce sont les suivants: Gauche, Haut, Droite et Bas.

Voici un exemple:

Margin="10,15,5,0" 

Le code ci-dessus définit une marge de:

  • 10 pixels de la gauche.
  • 15 Pixels depuis le haut.
  • 5 pixels à partir de la droite.
  • 0 Pixels à partir du bas.

La marge est toujours définie sur Gauche, Haut, Droite, Bas. Cependant, il y a quelques raccourcis.

Par exemple:

Margin="10,15" 

La marge ici sera définit comme:

  • 10 pixels sur la gauche et droit.
  • 15 pixels sur le dessus et Dessous.

Et aussi:

Margin="15" 

Cette marge sera de 15 pixels sur tous les côtés.

Pour répondre à votre question plus directement, il vous manque simplement les virgules.

+0

Mon point est que Margin = "1, 1, 1, 1" n'a même pas de sens parce que l'image est seulement 30px long, comment sa marge de gauche et la marge de droite peuvent-elles être égales à 1? Cela n'entraînerait-il pas une erreur de compilation ou quelque chose? Au lieu de cela, il centre l'image. Je veux juste savoir pourquoi cela arrive. – Sweeper

+0

La marge est relative à son alignement ** actuel **. Vous n'avez défini aucune valeur pour 'HorizontalAlignment', et' VerticalAlignment', donc ils ont des valeurs par défaut, ce qui signifie 'Stretch' (ce qui signifie qu'il remplira tout l'espace disponible). Essayez de définir 'HorizontalAlignment =" Left "', et 'VerticalAlignment =" Top "'.Je vois que vous venez d'un fond HTML/CSS, vous n'avez pas besoin de "px" dans les valeurs "Width" et "Height". –