Tengo un ListBox
que tiene StackPanel
s sostienen un TextBlock
y un Image
horizontal, seguida de una ContentPresenter
. Esto es lo que se ve como el XAML:WP7 TextBlock dentro de un cuadro de lista no ajustar el texto
<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>
Soy la creación de la ItemsSource
del ListBox
a un ObservableCollection
dentro de la página constructor. Todo funciona bien hasta que el texto Header
sea demasiado largo, en cuyo caso no se ajusta como lo he especificado. ¿Cómo puedo forzar el TextBlock
para ajustar el texto?
Gracias por su ayuda!
¿Pero no debería la propiedad TextWrapping encargarse de eso? ¿Hay alguna otra forma de resolver este problema? Por ejemplo, usar Grids en lugar de StackPanels para contener los UIElements. – Praetorian
No estoy seguro de cómo Text Wrapping sabría cuál es el límite horizontal si no está restringido de alguna manera. –
Tenías razón, solucioné el problema agregando un evento 'SizeChanged' al' TextBox' y estableciendo su ancho en función del ancho de la página. – Praetorian