TextBlock或RichTextBox给我修剪文本

本文关键字:修剪 文本 RichTextBox TextBlock | 更新日期: 2023-09-27 18:15:39

我通过XML解析从服务器API获得原始文本。我正在检查全文是进入数组/列表,但它得到修剪时,显示在页面内的textblock或richtextbox。

下面是Listbox的XAML,它包含了我的richtextbox:

         <ListBox Name="ListboxPolicy" Background="#FF5F113C" Opacity="0.93"  Foreground="#FFF5E0EC" Margin="0,137,0,0">

            <ListBox.ItemTemplate>
                <DataTemplate >
                    <StackPanel>
                        <!--<TextBlock x:Name="PolicyText" TextAlignment="Justify"  Text="{Binding policyDetailsData}"  TextWrapping="Wrap" IsHitTestVisible="False"/>-->
                        <RichTextBox  x:Name="BoxPolicies" IsHitTestVisible="False" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" SizeChanged="BoxPolicies_SizeChanged" >
                            <Paragraph FontSize="24" FontWeight="Bold" Foreground="#FFDABCD5">
                                <Run Text="{Binding Path=policyTitleData}" />
                            </Paragraph>
                            <Paragraph  FontSize="20" TextAlignment="Justify" >
                                <Run   Text="{Binding Path=policyDetailsData}" />
                            </Paragraph>
                            <Paragraph FontSize="20">
                                <Run Text="-----------------------------" />
                            </Paragraph>
                        </RichTextBox>

                        <!--<TextBlock x:Name="PolicyHeader"  Text="{Binding policyTitleData}"  TextWrapping="Wrap" IsHitTestVisible="False" Foreground="#FF13090E" FontWeight="Bold" FontSize="22"/>
                        <TextBlock x:Name="PolicyText"    Text="{Binding policyDetailsData}"  TextWrapping="Wrap" IsHitTestVisible="False" FontSize="20"/>-->

                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>

        </ListBox>

TextBlock或RichTextBox给我修剪文本

StackPanel的默认方向是垂直的,它需要子元素的高度和宽度(这里是RichTextBox),如果你不设置高度和宽度到StackPanel

为了避免文本修剪,你需要设置StackPanel方向="水平"和高度和宽度为RichtextBox

     <StackPanel Orientation="Horizontal">
        <RichTextBox  x:Name="BoxPolicies" IsHitTestVisible="False" Height="400" Width="400" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
            <FlowDocument >
                <Paragraph FontSize="24" FontWeight="Bold" Foreground="Red">
                    <Run />
                </Paragraph>
                <Paragraph  FontSize="20" TextAlignment="Justify" >
                    <Run />
                </Paragraph>
            </FlowDocument>
        </RichTextBox>
    </StackPanel>

由于性能原因,单个TextBlock中可以显示的文本数量是有限的。对我来说有效的是将文本分成段落,将每个段落放在单独的TextBlock中,并将所有段落添加到StackPanel中。

在这篇博文中有一个实现的解决方案