4 votes

Ordonner les éléments horizontalement dans une grille XAML (Win8 / Metro)

Comment trier les éléments d'une GridView horizontale dans le XAML ? Malheureusement, je n'ai trouvé aucune méthode pour y parvenir. Le mot clé "Orientation" n'est pas disponible. Voici mon GridView actuel :

            <GridView x:Name="TestDataBinding"
                HorizontalContentAlignment="Left"
                VerticalContentAlignment="Top"
                SelectionMode="None"
                ItemsSource="{Binding}"
                ItemTemplateSelector="{StaticResource itemTemplateSelector}"
                Margin="0,60,0,0"
                Width="1100" Height="540"
            />

Une autre solution pourrait être une "VariableSizedWrapGrid". Mais elle ne peut pas être utilisée pour créer des éléments à l'aide de "ItemsSource" (et du sélecteur ItemTemplateSelector).

11voto

Jerry Nixon - MSFT Points 12256

Désolé, je ne suis pas d'accord avec votre commentaire selon lequel il n'est pas possible de faire cela avec une VariableSizedWrapGrid. C'est tout à fait possible :

<GridView>
    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <VariableSizedWrapGrid Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
    <x:String>One</x:String>
    <x:String>Two</x:String>
    <x:String>Three</x:String>
    <x:String>Four</x:String>
</GridView>

Et je dois constater que VariableSizedWrapGrid ne peut pas être utilisé pour créer des éléments à travers ItemsSource. Il n'est pas possible de créer des éléments à l'aide de ItemsSource. le plus peut certainement le faire. WrapGrid et VariableSizedWrapGrid sont fondamentalement identiques. La grille WrapGrid est légèrement plus légère car elle ne prend pas en charge l'espacement des colonnes et des lignes.

5voto

Jim O'Neil Points 12570

Ajoutez un modèle ItemsPanelTemplate pour contrôler la façon dont les éléments sont disposés, par exemple,

<GridView.ItemsPanel>
    <ItemsPanelTemplate>
        <WrapGrid Orientation="Horizontal"/>
    </ItemsPanelTemplate>
</GridView.ItemsPanel>

2voto

Ryan Points 351

Il suffit de définir l'orientation de la grille ItemsWrapGrid :

<GridView.ItemsPanel>
    <ItemsPanelTemplate>
        <ItemsWrapGrid Orientation="Horizontal"/>
    </ItemsPanelTemplate>
</GridView.ItemsPanel>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X