249 votes

ItemsControl avec orientation horizontale

Vous connaissez tous les contrôles hérités de ItemsControl qui ont une orientation horizontale des éléments ?

522voto

Kent Boogaart Points 97432

Changez simplement le panneau utilisé pour héberger les éléments:

 <ItemsControl ...>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>
 

36voto

NielW Points 523

Bien que la réponse promue soit excellente, voici une alternative si vous voulez que les éléments s'étirent.

 <ItemsControl.ItemsPanel>                              
    <ItemsPanelTemplate>
        <UniformGrid Rows="1" />
    </ItemsPanelTemplate>
</ItemsControl.ItemsPanel>   
 

9voto

HockeyJ Points 1408

Le haut réponse est bonne, mais je ne pouvais pas le faire fonctionner avec des usercontrols. Si vous avez besoin d'usercontrols, cela devrait aider.

ItemsControl à l'Horizontale Usercontrols

Ma Version:

      <Window.Resources>  

        <DataTemplate x:Key="ItemTemplate2">
            <StackPanel>
                <uc:MyUserControl MinWidth="20" BorderBrush="Black" BorderThickness="0.1"></uc:MyUserControl>
            </StackPanel>
        </DataTemplate>
        <ItemsPanelTemplate x:Key="ItemsPanelTemplate1">
            <StackPanel Orientation="Horizontal" Margin="0,0,0,0"/>
        </ItemsPanelTemplate>
</Window.Resources>

<StackPanel>
<ItemsControl x:Name="list_MyControls" HorizontalAlignment="Left" Margin="0,8,0,0" VerticalAlignment="Top"
                          ItemTemplate="{StaticResource ItemTemplate2}"                 
                          ItemsPanel="{StaticResource ItemsPanelTemplate1}"/>

</StackPanel>

Pour lier des données, vous devez ajouter un ItemsSource de la ItemsControl, dans le XAML, ou le code derrière. Notez également que les communications unifiées: la xmlns:uc="NamespaceOfMyControl", a déclaré au début du fichier.

-2voto

silverlame Points 7

Cela ne va pas en fait de travailler dans de nombreuses situations.

l’utilisation d’un stackpanel signifie que le contenu ne s’étire pas pour remplir l’espace.

vous devez ensuite définir une largeur fixe sur quoi que ce soit dans l’itemtemplate.

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