Search code examples
silverlightwindows-phone-7listboxtextblock

windows phone 7 TextBlock TextWrapping not honored in listbox


I have a listbox defined as :

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <ListBox x:Name="myListBox" Width="468" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <toolkit:WrapPanel />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.Template>
                <ControlTemplate>
                    <ScrollViewer Width="468">
                        <ItemsPresenter />
                    </ScrollViewer>
                </ControlTemplate>
            </ListBox.Template>
        </ListBox>
    </Grid>

In the code, I create multiple textBlocks as the Listbox Items with textWrapping enabled in each textBlock.

       for (int i = 0; i < everyLine.Length; i++)
        {
            TextBlock txtBlock = new TextBlock()
            {
                TextWrapping = TextWrapping.Wrap,
                Name = "textBlock" + i,
                Foreground = textBrush,
                FontSize = 20,
                Text = everyLine[i]
           };

            this.myListBox.Items.Add(txtBlock);
        }

But, none of the text in any of the text blocks gets wrapped.

Can somebody please let me know if the above way of defining textBlocks in listbox is incorrect?


Solution

  • +1 for Derek's answer

    Also, please be careful using the <StackPanel> in your ListBox. By default, the ListBox uses a <VirtualizingStackPanel> and this is very important as it uses significantly less UI resources (memory) when displaying long lists.