Tôi có một ListBox
có StackPanel
s đang cầm TextBlock
và Image
theo chiều ngang, theo sau là ContentPresenter
. Đây là những gì trông giống như XAML:WP7 TextBlock bên trong ListBox không bao gói văn bản
<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>
Tôi đang thiết lập các ItemsSource
của ListBox
một ObservableCollection
trong constructor trang. Mọi thứ hoạt động tốt cho đến khi văn bản Header
trở nên quá dài, trong trường hợp đó nó không được gói như tôi đã chỉ định. Làm thế nào tôi có thể buộc TextBlock
để bọc văn bản?
Cảm ơn sự giúp đỡ của bạn!
Nhưng không nên thuộc tính TextWrapping xử lý điều đó? Có cách nào khác để giải quyết vấn đề này không? Ví dụ, sử dụng Grids thay vì StackPanels để giữ các UIElements. – Praetorian
Tôi không chắc chắn cách TextWrapping sẽ biết ranh giới nằm ngang là gì nếu nó không bị hạn chế. –
Bạn đã đúng, tôi đã khắc phục sự cố bằng cách thêm sự kiện 'SizeChanged' vào' TextBox' và đặt chiều rộng của nó dựa trên chiều rộng trang. – Praetorian