【问题标题】:WP7 TextBlock inside a ListBox not wrapping textListBox内的WP7 TextBlock不换行
【发布时间】:2011-01-02 12:20:08
【问题描述】:

我有一个ListBox,它有一个StackPanels 水平持有一个TextBlock 和一个Image,然后是一个ContentPresenter。这就是 XAML 的样子:

<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>

我在页面构造函数中将ListBoxItemsSource 设置为ObservableCollection。一切正常,直到 Header 文本变得太长,在这种情况下,它不会像我指定的那样换行。如何强制TextBlock 换行?

感谢您的帮助!

【问题讨论】:

    标签: windows-phone-7 listbox textblock


    【解决方案1】:

    这可能是因为没有限制 TextBlock 的宽度,所以它会在屏幕外你看不到的地方水平增长。

    【讨论】:

    • 但是 TextWrapping 属性不应该解决这个问题吗?有没有其他方法可以解决这个问题?例如,使用 Grids 而不是 StackPanels 来保存 UIElements。
    • 我不确定如果 TextWrapping 没有受到某种限制,它如何知道水平边界是什么。
    • 你是对的,我通过将SizeChanged 事件添加到TextBox 并根据页面宽度设置其宽度来解决问题。
    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    相关资源
    最近更新 更多