0

私はいくつかのXMLを持っています...

...
<body>
    <p>blah blah blah blah blah blah </p>
    <p>blah blah blah blah blah blah </p>
    ...
</body>
...

各 P 要素が文字列に追加された後に二重の改行が挿入されるように、XML を文字列に解析します...

foreach (XElement e in element.Element("body").Descendants("p"))
{
    try
    {
        item.Content += e.Value + Environment.NewLine + Environment.NewLine;
    }
    catch { }
}

アイテムの Content プロパティは、後で Visual Studio 2012 で使用できるアイテム詳細ページ テンプレートの RichTextBlock 要素の Content Run にバインドされます。この時点で、奇妙な動作に気付きました。

一部の項目では、最初の列の最後でテキストが切り捨てられ、テキストが新しい列にオーバーフローすると思われる場所に省略記号が追加されます。シミュレーターの解像度を変更すると、以前に切り捨てられたアイテムが正しく表示され、別のアイテムが切り捨てられます。解像度を元に戻すと、前のアイテムが再び切り捨てられます。

スクリーンショット: http://i.stack.imgur.com/qrTqP.png

さらに奇妙なことに、解析コードを変更して 3 つの改行を挿入すると、期待どおりにすべてがオーバーフローします。

最初は、RichTextBlock が新しい列にオーバーフローする必要性を誤って計算していると思いましたが、これは、追加される省略記号や、単語の最後で常に切り捨てられるという事実を説明していません。

これが私のRichTextBoxのXAMLです...

<RichTextBlock x:Name="richTextBlock" Width="560" Style="{StaticResource ItemRichTextStyle}" IsTextSelectionEnabled="False">

    <Paragraph>
        <Run FontSize="26.667" FontWeight="Light" Text="{Binding Title}"/>
        <LineBreak/>
        <LineBreak/>
        <Run FontWeight="Normal" Text="{Binding PublicationDate, Converter={StaticResource DateTimeString}}"/>
    </Paragraph>

    <Paragraph LineStackingStrategy="MaxHeight">
        <InlineUIContainer>
            <Image x:Name="image" MaxHeight="480" Margin="0,20,0,10" Stretch="Uniform" Source="{Binding LargeImage, Converter={StaticResource ImageLocation}, ConverterParameter=news}" AutomationProperties.Name="{Binding Title}"/>
        </InlineUIContainer>
    </Paragraph>

    <Paragraph>
        <Run FontWeight="SemiLight" Text="{Binding Content}"/>
    </Paragraph>

</RichTextBlock>

なぜこれが起こるのか、RichTextBlock がコンテンツを自動的に切り捨てるのを防ぐ方法を知っている人はいますか?

4

0 に答える 0