การตัดข้อความ WPF กับ WrapWithOverflow


170

อะไรคือ "ความคิด" ที่แตกต่างระหว่างTextWrapping="Wrap"และTextWrapping="WrapWithOverflow"(เช่นสำหรับกล่องข้อความ)? ในหน้า MSDN เกี่ยวกับกล่องข้อความของชั้นเรียนไม่มีอะไร ... ขอบคุณ

คำตอบ:


187

MSDN

WrapWithOverflow การแบ่ง บรรทัดเกิดขึ้นหากบรรทัดล้นเกินกว่าความกว้างบล็อกที่มีอยู่ อย่างไรก็ตามบรรทัดอาจล้นเกินกว่าความกว้างของบล็อกหากอัลกอริทึมการทำลายเส้นไม่สามารถกำหนดโอกาสในการทำลายเส้นได้เช่นในกรณีของคำที่ยาวมากซึ่งถูก จำกัด ในคอนเทนเนอร์ความกว้างคงที่โดยไม่อนุญาตให้เลื่อน
NoWrap ไม่มีการตัดบรรทัด
การตัดการแบ่ง บรรทัดเกิดขึ้นหากบรรทัดล้นเกินกว่าความกว้างของบล็อกที่มีอยู่แม้ว่าอัลกอริทึมการทำลายเส้นมาตรฐานไม่สามารถกำหนดโอกาสในการทำลายเส้นใด ๆ ได้เช่นในกรณีของคำที่ยาวมากซึ่ง จำกัด ไว้ในคอนเทนเนอร์ที่มีความกว้างคงที่

หวังว่านี่จะช่วยได้


11
ฉันรู้ว่าคำถามนี้ถูกส่งตรงไปที่ WPF แต่ฉันคิดว่ามันอาจคุ้มค่าที่WrapWithOverflowจะทราบว่าSilverlight ไม่รองรับ เฉพาะWrapและNoWrapได้รับการสนับสนุนใน Silverlight msdn.microsoft.com/en-us/library/ ......
blachniet

3
ฉันอ่านสิ่งนี้และฉันก็ยังไม่มั่นใจในความแตกต่าง เป็นแนวคิดพื้นฐานที่WrapWithOverFlowจะไม่ทำลายคำ แต่Wrapจะ?
Brian J

6
@BrianJ - ดูคำตอบของฉันสำหรับตัวอย่าง
เคน

317

ตัวอย่างบางส่วน:

นี่เป็นรุ่นดั้งเดิมที่ยังไม่ได้เปิด:

ไม่มีการห่อ


NoWrapนี่คือ

nowrap


Wrapนี่คือ คำพูดRemoveและSampleถูกห่อหุ้มที่veและleตามลำดับแม้ว่าจะไม่มีโอกาสหยุดพัก

Wrap


WrapWithOverflowนี่คือ veและleมองไม่เห็น (พวกเขาล้นกว้างบล็อกมี) เพราะไม่มีโอกาสแบ่งบรรทัด Allในทั้งสองกรณีได้รับการห่อเพราะspaceตัวละครเป็นโอกาสที่แบ่งบรรทัด

WrapWithOverflow


แก้ไข:

ตามที่แนะนำในความคิดเห็นต่อไปนี้เป็นตัวอย่างของวิธีการWrapปฏิบัติต่อช่องว่าง เมื่อWidthเป็น100, WrapและWrapWithOverflowเหมือนกัน Wrapปฏิบัติช่องว่างระหว่างwiderและexampleเป็นโอกาสในการแบ่งบรรทัดดังนั้นจึงควรexampleติดตั้งบรรทัดใหม่เพื่อรักษาคำศัพท์ทั้งหมดอย่างต่อเนื่อง

ป้อนคำอธิบายรูปภาพที่นี่


5
คำตอบนี้จะได้รับประโยชน์จากการรวมตัวอย่างปุ่ม (กว้างขึ้น) อีกหนึ่งปุ่มในแต่ละโหมดที่มีการแบ่งช่องว่างที่ถูกต้อง จากภาพรวมมันแสดงถึงการWrapละเว้นช่องว่างระหว่างช่องว่างอย่างสมบูรณ์ แต่นั่นไม่เป็นความจริง
Scott Stafford

8

สิ่งหนึ่งที่จะเพิ่มให้กับคำตอบอื่น ๆ 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.