web-dev-qa-db-ja.com

WPFテキストラップとWrapWithOverflow

TextWrapping="Wrap"TextWrapping="WrapWithOverflow"の「概念的な」違いは何ですか(TextBoxの場合など)。クラスTextBoxに関するMSDNページには何もありません...ありがとう。

160

MSDN

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

お役に立てれば

181
Arsen Mkrtchyan

いくつかの例:

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

No wrapping


これはNoWrapです。

NoWrap


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

Wrap


これはWrapWithOverflowです。 veleは、改行の機会がないため表示されません(使用可能なブロック幅をオーバーフローします)。 All文字は改行の機会であるため、どちらの場合もspaceはラップされています。

WrapWithOverflow


編集:

コメントで示唆されているように、Wrapがスペースを処理する方法の例をいくつか示します。 Width100の場合、WrapWrapWithOverflowは同じです。 Wrapは、widerexampleの間のスペースを改行の機会として扱います。したがって、exampleは、連続したWord全体を保持するために新しい行に配置されます。

enter image description here

295
ken

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

enter image description here

<TextBlock TextWrapping="WrapWithOverflow" Width="120" TextTrimming="CharacterEllipsis">
    A really long Word is antidisestablishmentarianism and we can use Ellipsis trimming.
</TextBlock>
0
Vimes