TextBlock或RichTextBox为我提供了修剪文本

时间:2014-07-30 06:42:18

标签: c# xaml parsing windows-phone-8 listbox

我通过XML解析从Server API获取Raw文本。我正在检查全文是否进入数组/列表,但是当它显示在textblock或richtextbox中的页面中时会被修剪。

这是包含我的richtextbox的列表框的XAML:

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

2 个答案:

答案 0 :(得分:1)

StackPanel 的默认方向是垂直的,如果你没有将Height和Width设置为stackpanel,它会占用子元素(这里是RichTextBox)的高度和宽度。

  

要避免文本修剪,您需要将StackPanel Orientation设置为“水平”,将高度和宽度设置为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>

答案 1 :(得分:0)

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

this blog post

中有一个已实施的解决方案