3

私はRichTextBox2つを含んでいRunsます:

<RichTextBox>
    <RichTextBox.Document>
        <FlowDocument>
            <FlowDocument.Blocks>
                <Paragraph Name="par">
                    <Run Text="First"/>
                    <Run Text="Second"/>
                </Paragraph>
            </FlowDocument.Blocks>
        </FlowDocument>
    </RichTextBox.Document>
</RichTextBox>

の を繰り返し処理するInlinesと、"First"、" "(スペース)、および "Second"のpar3 つが表示されます。Runs大丈夫です。しかし、2 番目の " "Runを (たとえば、Backspace キーを使用して) 削除してから を反復処理すると、Inlines" parFirstSecond" が 1 つしか表示されませんRunRichTextBox残りの 2 つRunsを single にマージしRunます。ただし、「First」と「Second」の値Runsが異なるTextFont場合、それらはマージされず、「First」と「Second」の 2 つが表示されます。TextWeightRichTextBoxRuns

ここで私の質問:Runsによって隣接するものが自動的にマージされないようにするにはどうすればよいRichTextBoxですか?

または値Runsが異なる場合と同様の動作を得たいのですが、視覚的にはそれらの形式は同じでなければなりません。さまざまな にさまざまな値を設定しようとしましたが、役に立ちませんでした。おそらく、 の外観には影響しないが、RichTextBox にそれらを区別するように警告する「論理的な」形式がいくつかあります。TextFontTextWeightTagRunsRuns

4

1 に答える 1

3

明確な解決策は見つかりませんでしたが、回避策があります。RunTypographyプロパティを持ち、次にそれはInt32 AnnotationAlternatesプロパティを持ちます。このプロパティは、特定のフォントの特定の文字の見通しの微調整を定義します。このプロパティが意図したとおりに使用されない場合は、 の「論理」形式として使用できますRun。MSDN に書かれているとおり:

AnnotationAlternates の値が 0 より大きく、選択したフォントが代替注釈をサポートしていない場合は、文字の既定の形式が表示されます。

私のアプリケーションでは、Segoe UIフォントを使用していますが、これは注釈の代替をサポートしていないことが判明したため、この回避策が機能します。注釈の代替をサポートするフォントを使用する場合は、AnnotationAlternatesプロパティのかなり大きな値を使用することを試みることができます。おそらく、テキストの外観には影響しません。

于 2014-10-10T20:19:52.497 に答える