Comment aligner les boutons à l'horizontale et à la propagation de l'égalité avec les xaml windows phone

J'ai une ObservableCollection qui contient ViewModel qui à son tour définit mes boutons définitions.

J'ai été à elle pendant des heures, la lecture d'articles après articles, mais en vain. J'ai essayé d'utiliser une zone de liste et c'est le plus proche que je dois. Mes boutons sont de se construire à l'horizontale, mais en supposant que je suis l'affichage de 3 boutons, je veux une affiche sur la gauche, une affiche dans le milieu et une affiche sur la droite.

<ListBox Grid.Row="2" ItemsSource="{Binding Links}">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <StackPanel Background="Beige" Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Button Grid.Column="{Binding Column}" 
                    Grid.Row="0" 
                    Width="90" 
                    Height="90">
                <ContentControl>
                    <StackPanel Orientation="Vertical">
                        <Image Source="{Binding Image}" Width="36" Height="36"
                               Margin="5" Stretch="UniformToFill" 
                               HorizontalAlignment="Center"/>
                        <TextBlock Text="{Binding Description}" 
                                   Foreground="#0F558E" 
                                   FontSize="18" 
                                   HorizontalAlignment="Center"/>
                    </StackPanel>
                </ContentControl>
            </Button>
        </DataTemplate>
    </ListBox.ItemTemplate>
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

Comme vous pouvez le voir, j'ai mis de la colonne de manière dynamique à l'aide d'une propriété de mon ViewModel mais je n'ai plus une grille que je ne pouvais pas le faire fonctionner, mais, idéalement, je voudrais utiliser une grille, de sorte que je peux indiquer dans la Colonne à définir le bouton.

Lorsque j'utilise un StackPanel, il fonctionne, mais les boutons sont juste à côté de l'autre plutôt que d'être réparti de manière égale à travers toute la largeur de l'écran.

J'ai fait quelque chose de similaire à ce qui précède à l'aide de ItemsControl et à l'aide d'une grille, et je peux voir chaque bouton s'ajouter, mais ils se chevauchent les uns les autres dans la ligne 0, col-0. Si je la lie de la ligne de la Colonne de la propriété à des fins de test, il le construire correctement mais mes boutons sont affichés sur des lignes différentes, qui n'est pas ce que je veux. Je veux que chaque bouton pour être aligné horizontalement.

Comment puis-je y parvenir? Je sais que je pourrais juste coder en dur les 3 boutons et juste changer les icônes et le texte et de gérer le code en passant par le bouton correspondant en tant que paramètre lié, mais idéalement, j'aimerais construire les boutons de façon dynamique dans une grille et placez-les à l'aide de la colonne.

Noter que le nombre de colonne serait fixé, c'est à dire 3, que je n'aurai jamais plus que cela.

Grâce.

OriginalL'auteur Thierry | 2014-10-15