Search code examples
windows-phone-7wrappanel

Wrap Panel in ListBox


I have the following XAML code:

<DataTemplate x:Key="FriendsDataTemplate">
    <toolkit:WrapPanel Orientation="Horizontal" ItemWidth="173" ItemHeight="233">
        <Grid VerticalAlignment="Top" HorizontalAlignment="Right">
            <Grid.RowDefinitions>
                <RowDefinition Height="183"/>
                <RowDefinition Height="50"/>
            </Grid.RowDefinitions>
            <Image x:Name="FriendAvatar" Margin="1,1,11,11" Source="{Binding ImageURL}" Width="173" Height="173"/>
            <Grid Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Top">
                <TextBlock x:Name="FriendName" Margin="0" Text="{Binding FriendName}" Grid.Row="1" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center" Padding="0,0,10,0" TextAlignment="Right"/>
            </Grid>
        </Grid>
    </toolkit:WrapPanel>
</DataTemplate>

<Grid x:Name="FriendsGrid">
    <ListBox x:Name="FriendsList" Margin="0" ItemTemplate="{StaticResource FriendsDataTemplate}"/>
</Grid>

FriendsList width is 420px.

My problem is: I want two items column, but I see one.

Any advice?


Solution

  • I've found the solution. Here is my working XAML code:

    <DataTemplate x:Key="FriendsDataTemplate">
        <Grid VerticalAlignment="Top" HorizontalAlignment="Right">
            <Grid.RowDefinitions>
                <RowDefinition Height="183"/>
                <RowDefinition Height="50"/>
            </Grid.RowDefinitions>
            <Image x:Name="FriendAvatar" Margin="1,1,11,11" Source="{Binding ImageURL}" Width="173" Height="173"/>
            <Grid Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Top">
                <TextBlock x:Name="FriendName" Margin="0" Text="{Binding FriendName}" Grid.Row="1" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center" Padding="0,0,10,0" TextAlignment="Right"/>
            </Grid>
        </Grid>
    </DataTemplate>
    
    <Grid x:Name="FriendsGrid">
        <ListBox x:Name="FriendsList" Margin="0" ItemTemplate="{StaticResource FriendsDataTemplate}" Width="420">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <toolkit:WrapPanel ItemWidth="173" ItemHeight="233"/>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
        </ListBox>
    </Grid>
    

    I've added a ListBox.ItemsPanel inside ListBox definition. And I've moved wrap panel on it.