mam ListBox
który ma StackPanel
s gospodarstwa TextBlock
oraz Image
poziomo, a następnie przez ContentPresenter
. To właśnie XAML wygląda następująco:WP7 TextBlock wewnątrz ListBox nie owijania tekst
<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>
ja ustawiania ItemsSource
z ListBox
do ObservableCollection
w konstruktora strony. Wszystko działa poprawnie, dopóki tekst nie staje się zbyt długi, w takim przypadku nie jest zawijany, tak jak to określiłem. Jak zmusić TextBlock
do zawijania tekstu?
Dzięki za pomoc!
Ale czy właściwość TextWrapping nie powinna o to dbać? Czy istnieje inny sposób rozwiązania tego problemu? Na przykład, używanie Gridów zamiast StackPaneli do przechowywania UIElements. – Praetorian
Nie jestem pewien, w jaki sposób TextWrapping będzie wiedział, jaka jest granica pozioma, jeśli nie jest w jakiś sposób ograniczona. –
Miałeś rację, naprawiłem problem przez dodanie zdarzenia 'SizeChanged' do' TextBox' i ustawienie jego szerokości w oparciu o szerokość strony. – Praetorian