2010-02-26 5 views
1

Je suis tout nouveau à Silverlight et j'ai de la difficulté avec l'espacement. Comme vous pouvez le voir ci-dessous, j'ai deux lignes d'étiquettes dans un Horizontal StackPanel. Quand ils affichent il y a un large espace (environ un pouce) entre eux. Je ne peux pas comprendre comment réduire cet espacement. Les caractéristiques de hauteur ne semblent pas le faire.Espacement dans Silverlight

Merci d'avance.

<UserControl x:Class="SilverlightApplication1.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480" Margin="10"> 
    <StackPanel x:Name="LayoutRoot" Background="LightGray" Margin="10"> 
     <StackPanel Orientation="Horizontal" Height="50" Width="500" Margin="10"> 
      <TextBlock Height="15" Width="100" Margin="20"/> 
      <TextBlock Text="Heading" Height="15" Width="100" Margin="10"/> 
      <TextBlock Text="PDOF" Height="15" Width="100" Margin="15"/> 
      <TextBlock Text="PDOF" Height="15" Width="100" Margin="15"/> 

     </StackPanel> 
     <StackPanel Orientation="Horizontal" Height="50" Width="500" Margin="10"> 
      <TextBlock Height="15" Width="100" Margin="20"/> 
      <TextBlock Text="(degrees)" Height="15" Width="60" Margin="10"/> 
      <TextBlock Text="locked" Height="15" Width="40" Margin="10"/> 
      <TextBlock Text="(degrees)" Height="15" Width="100" Margin="15"/> 
      <TextBlock Text="(O'Clock)" Height="15" Width="100" Margin="15"/> 

     </StackPanel> 
    </StackPanel> 
</UserControl> 

Répondre

2

En spécifiant la marge comme une valeur unique Margin="10" vous spécifiez une marge égale de 10 autour de chaque bord, gauche, haut, droite, bas.

Vous devez diviser la marge pour être juste à gauche et à droite disent:

Margin="10,0,20,0" 

En faisant cela, il y a seulement une marge à gauche et à droite, pas le haut et le bas. Cela devra s'appliquer à tous les éléments car les marges sont cumulatives.

Il y a plus d'informations sur le MSDN page pour Margin:

<frameworkElement Margin="uniform"/> 
- or - 
<frameworkElement Margin="left+right,top+bottom"/> 
- or - 
<frameworkElement Margin="left,top,right,bottom"/> 

Ainsi, une seule valeur est un espacement uniforme, une paire de valeurs divise les marges horizontales et verticales et ayant les quatre valeurs vous donne un contrôle total sur tous les quatre.

Dans votre cas, vous pouvez simplement avoir:

Margin="10,0" 

pour spécifier une marge horizontale sans marge verticale, ou

Margin="15,10" 

pour indiquer une marge horizontale, mais une plus petite marge verticale.

Cette image de la page illustre la façon dont ce dernier serait appliqué:

alt text http://i.msdn.microsoft.com/ms600890.margin_and_alignment_3%28en-us,VS.95%29.png

0

Merci à ChrisF pour sa réponse. J'ai décidé d'aller avec une approche différente. J'ai utilisé Canvas au lieu de StackPanel.