Question

I ai un des éléments de contrôle qui est liée à une collection d'objets. L'objet a deux propriétés (nom, valeur) que i affichage dans une zone de texte et textblock respectivement. La liste est assez longue et je voudrais le montrer en deux colonnes. Ma question est, est-il possible que je peux obtenir un ItemsControl pour montrer ses éléments dans deux colonnes?

P.S: La collection est peuplée à l'exécution et je ne sais pas combien d'articles que je vais devoir montrer

Était-ce utile?

La solution

ai tendance à mettre les articles en WrapPanel, puis régler la largeur du panneau pour être 2x la largeur de l'article. Cela me donne de belles colonnes avec un nombre arbitraire d'éléments. Si vos largeurs d'articles différents, je mets chaque élément dans sa propre grille ou StackPanel de largeur fixe.

Autres conseils

Utilisez un ListBox et spécifiez un DataTemplate dans lequel vous mettez à la fois TextBlock et TextBox. Utilisez les liaisons pour les peupler. Voir http://msdn.microsoft.com/en-us/library/ms742521. ASPX pour plus d'exemples.

<ListBox x:Name="TheListBox">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" SharedSizeGroup="Key" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>

                <TextBlock Text="{Binding Name}" />
                <TextBox Grid.Column="1" Text="{Binding Value }" />
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

TheListBox.ItemsSource = CollectionOfObjects;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top