wpf - 在 WPF textBlock 中用缩进换行文本

标签 wpf xaml word-wrap textblock

我正在使用列表框来显示带有数据模板的撤消重做列表:

<ListBox x:Name="actionList"
           Height="150"
           HorizontalAlignment="Stretch"
           VerticalAlignment="Stretch"
           MouseMove="ListBoxMouseMove"
           ScrollViewer.VerticalScrollBarVisibility="Visible"
           SelectionMode="Extended"
           Style="{StaticResource CustomListBoxStyle}">
    <ListBox.ItemTemplate>
      <DataTemplate>
        <TextBlock Width="235"
                   HorizontalAlignment="Stretch"
                   VerticalAlignment="Stretch"
                   FontSize="11"
                   Text="{Binding DisplayText}"
                   TextWrapping="Wrap" />
      </DataTemplate>
    </ListBox.ItemTemplate>
  </ListBox>

它按预期工作,但对于长撤消重做字符串,会发生换行,但它与行的第一个字符对齐。我们希望它缩进一点以清楚地识别两个列表项。图示如下:

Word wrap desired functionality

我们怎样才能达到同样的效果。

最佳答案

“更简单”的方法可能涉及使用 Paragraph 对象来表示文本。

段落本身支持缩进,属性如 TextIndent(控制首行缩进,您可以将其设置为负值)或 Margin(设置整行的边距段落,但尊重首行缩进)。

<ListBox.ItemTemplate>
    <DataTemplate>
        // IsHitTestVisible is set to false to avoid FlowDocument's built-in text selection
        //     from disrupting the regular ListBox mouse selection behavior
        <Grid IsHitTestVisible="False">
            <FlowDocumentScrollViewer ScrollViewer.VerticalScrollBarVisibility="Disabled"
                                      ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                 <FlowDocument FontSize="12"
                               FontFamily="Calibri" 
                               Foreground="Black" 
                               PagePadding="0">
                     <Paragraph TextIndent="-10" 
                                Margin="10,0,0,0">
                         <Run Text="{Binding ., Mode=OneWay}" />
                     </Paragraph>
                 </FlowDocument>
            </FlowDocumentScrollViewer>
        </Grid>
    </DataTemplate>
</ListBox.ItemTemplate>

关于wpf - 在 WPF textBlock 中用缩进换行文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30752389/

相关文章:

c# - 从不同程序集加载合并的 ResourceDictionary 失败

ios - 如何在 UIImageView 周围环绕文字?

c# - WPF - 部分不可编辑的文本框

c# - WPF 应用程序中的 DialogResult

c# - WPF - ListView 的 ItemsSource 中的绑定(bind)不能是列表

c# - 仅在鼠标离开时自动反转为原始颜色

c# - TextBox 中的 StringFormat 是否有意义?

c# - 如何将数据从主窗口传递到主窗口内的用户控件?

algorithm - 最好的自动换行算法?

string - 使用 R 将字符串括起来,但不将子字符串括在引号中