Ho una ListBox
che ha StackPanel
s possesso di un TextBlock
e un Image
orizzontalmente, seguito da un ContentPresenter
. Questo è ciò che il codice XAML assomiglia:WP7 TextBlock all'interno di una ListBox non disponendo il testo
<Grid x:Name="ContentPanel"
Grid.Row="1"
Margin="12,0,12,0">
<ListBox x:Name="MainListBox"
Margin="12,0,12,0"
SelectionChanged="MainListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu x:Name="ContextMenu"
Opened="ContextMenu_Opened">
<toolkit:MenuItem Header="edit"
Tag="edit"
Click="MenuItem_Click" />
<toolkit:MenuItem Header="delete"
Tag="delete"
Click="MenuItem_Click" />
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Left">
<!-- **** This text won't wrap **** -->
<TextBlock Text="{Binding Header}"
TextWrapping="Wrap"
Style="{StaticResource PhoneTextNormalStyle}"
Foreground="{StaticResource PhoneAccentBrush}" />
<Image Source="/image.png"
Visibility="{Binding ImageVisibility}" />
</StackPanel>
<ContentPresenter Content="{Binding Content}"
HorizontalAlignment="Stretch" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment"
Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</Grid>
sto impostando la ItemsSource
del ListBox
a un ObservableCollection
all'interno del costruttore pagina. Tutto funziona bene fino a quando il testo Header
diventa troppo lungo, nel qual caso non viene eseguito il wrapping come l'ho specificato. Come posso forzare lo TextBlock
per avvolgere il testo?
Grazie per il vostro aiuto!
Ma la proprietà TextWrapping non dovrebbe occuparsene? C'è un altro modo per risolvere questo problema? Ad esempio, utilizzando Griglie anziché StackPanel per contenere gli UIElements. – Praetorian
Non sono sicuro di come TextWrapping possa sapere quale sia il limite orizzontale se non è in qualche modo limitato. –
Avevi ragione, ho risolto il problema aggiungendo un evento 'SizeChanged' a' TextBox' e impostando la sua larghezza in base alla larghezza della pagina. – Praetorian