À l'aide de WrapPanel et ScrollViewer pour donner un multi-colonne Listbox dans WPF

Je suis en train de faire une simple application MÉTIER qui charge les données à partir d'un fichier XML et l'affiche dans une liste avec quelques boutons à l'édition.

Dans ma première tentative, tout était ok, sauf que la liste défile vers le bas dans une longue colonne. Je préfère que les données d'enveloppe de sorte que, au bas de la Fenêtre, il démarre une deuxième colonne et ainsi de suite – si vous redimensionnez la Fenêtre de données doit redimensionner en conséquence.

Tout d'abord, je viens de mettre la liste à l'intérieur d'un ScrollViewer. Cela ne fait aucune différence que ce soit.

Ensuite, j'ai ajouté un WrapPanel au sein de l'ItemTemplate. À ce stade, j'ai eu une longue ligne horizontale, mais il n'a jamais enroulée sur une deuxième ligne, en dépit de mon réglage du ScrollViewer.HorizontalScrollbar=désactivé.

J'ai cherché partout sur le web sur divers blogs et forums, mais ne peut pas voir la différence entre les suggestions et mon code (ci-dessous). Des conseils seront très appréciés.

<Window x:Class="MyApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="My App" Height="300" Width="400"
        FocusManager.FocusedElement="{Binding ElementName=eventsList}">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
                <ScrollViewer Grid.Row="0" Grid.Column="0"     HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
            <ListBox Name="eventsList">
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <WrapPanel />
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
            </ListBox>
        </ScrollViewer>

        <StackPanel Grid.Row="1" Grid.Column="0" Orientation="Horizontal"     HorizontalAlignment="Center" Visibility="Collapsed">
            <Button Name="action1Button" />
            <Button Name="action2Button" />
            <Button Name="action3Button" />
        </StackPanel>
    </Grid>
</Window>

OriginalL'auteur Saqib | 2009-05-25