WPFテキストラップとWrapWithOverflow


170

間の「概念」の違いは何だTextWrapping="Wrap"TextWrapping="WrapWithOverflow"(例えばテキストボックス用)は?TextBoxクラスに関するMSDNページには何もありません...ありがとうございます。

回答:


187

MSDN

WrapWithOverflow 改行は、行が使用可能なブロック幅を超えてオーバーフローした場合に発生します。ただし、スクロールが許可されていない固定幅コンテナで非常に長い単語が制約されている場合など、改行アルゴリズムが改行の機会を判断できない場合、行がブロック幅を超えてオーバーフローする可能性があります。
NoWrap 行の折り返しは実行されません。 改行の
折り返しは、標準の改行アルゴリズムが改行の機会を判断できない場合でも、行が使用可能なブロック幅を超えてオーバーフローした場合に発生します。スクロールが許可されていない固定幅のコンテナーに非常に長い単語が制約されている場合などです。

お役に立てれば


11
この質問はWPFに関するものでしたがWrapWithOverflow、Silverlightではサポートされていないことに注意してください。のみWrapNoWrapSilverlightでサポートされています。msdn.microsoft.com/en-us/library/...
blachniet

3
私はこれを読みましたが、まだ違いがわかりません。基本的な考えはWrapWithOverFlow言葉を壊さないWrapでしょうが、そうするでしょうか?
ブライアンJ

6
@BrianJ-いくつかの例については、私の回答を参照してください。

317

いくつかの例:

これは元のラップされていないバージョンです:

ラッピングなし


これですNoWrap

NoWrap


これですWrap。改行の機会はありませんが、単語RemoveSampleはそれぞれveleでラップされています。

ラップ


これですWrapWithOverflowveそしてle何改行機会がないので(それが可能なブロック幅をオーバーフロー)表示されません。Allので、両方のケースでは、ラップされたspace文字は、改行の機会です。

WrapWithOverflow


編集:

コメントで示唆されているように、Wrapがスペースを処理する方法の例をいくつか示します。ときWidth100WrapかつWrapWithOverflow同一です。とのWrap間のスペースを改行の機会として扱うため、連続した単語全体を保持するために新しい行に配置されます。widerexampleexample

ここに画像の説明を入力してください


5
この答えは、有効な空白の切れ目がある各モードにもう1つ(幅の広い)ボタンの例を含めることでメリットがあります。一見すると、Wrap空白の改行を完全に無視することを意味しますが、そうではありません。
スコットスタッフォード

8

他の回答に追加することの1つは、WrapWithOverflowを使用すると、切り捨てられる長い単語にテキストのトリミング(省略記号)を使用できます。

ここに画像の説明を入力してください

<TextBlock TextWrapping="WrapWithOverflow" Width="120" TextTrimming="CharacterEllipsis">
    A really long word is antidisestablishmentarianism and we can use ellipsis trimming.
</TextBlock>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.