2010-12-09 17 views
1

J'ai ItemTemplate suivantes:Silverlight: les éléments justifient-ils à droite et à gauche dans un ItemTemplate?

<ItemsControl ItemsSource="{Binding Topics}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal" Margin="10,0"> 
        <TextBlock Text="{Binding FallbackValue='topic name', Converter={StaticResource topicToStrConverter}}" 
           Margin="10,0" 
           VerticalAlignment="Center" /> 
        <Button HorizontalAlignment="Right"> 
         <Image Source="Images/appbar.cancel.rest.png" /> 
        </Button> 
       </StackPanel> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

Je voudrais droit aligner tous les boutons quelle que soit la longueur de leur texte correspondant, mais je ne suis pas sûr de savoir comment le faire.

J'utilise Silverlight 4.

Répondre

1

Votre panneau ne dispose pas d'une longueur de jeu, donc il n'y a rien à définir où vous voulez que le bord droit d'être. Si vous placez les éléments dans un StackPanel ou un Grid avec une largeur fixe, vous verrez le comportement que vous attendez.

+0

Comment définir la longueur de l'élément de texte le plus large? –

+0

@Rosarch Vous pouvez créer une propriété pour lier à la largeur, puis examiner les propriétés ActualLength de tous les blocs de texte de votre liste chaque fois qu'un nouvel objet est ajouté. Mais je pense que cela finirait par avoir l'air bizarre. Je vous suggère de choisir une largeur maximale pour le texte que vous voulez prendre en charge (peut-être autoriser l'habillage si nécessaire) ou de choisir une largeur maximale pour ItemsControl et de revenir en arrière, en fonction des autres éléments que vous voulez inclure (barres de défilement, etc). De cette façon, vos boutons sont toujours dans un endroit cohérent et votre interface utilisateur semble plus stable. – Raumornie