2013-01-15 15 views
13

Đây là tôi TextBlock sTại sao TextBlock cắt tỉa các khoảng trắng khỏi văn bản?

<StackPanel Orientation="Horizontal" Margin="0,3,0,0"> 
    <TextBlock Text="6 or more characters, at least one letter and a number, " FontFamily="Segoe UI" Foreground="#000000" FontSize="13"/> 
    <TextBlock Text="no symbols" FontFamily="Segoe UI" Foreground="#000000" FontSize="13"/> 
</StackPanel> 

Và đây là sản phẩm (ảnh chụp màn hình) enter image description here

gian Tại sao TextBlock Trims kết thúc? Tuy nhiên nó hoạt động tốt khi tôi đưa ra không gian hàng đầu.

Trả lời

16

Dường như xml:space="preserve"nên làm các trick (xem Preserving Whitespace in XAML) nhưng điều đó dường như không được làm việc trong một ứng dụng Windows Store (nó trong WPF).

Nếu bạn sử dụng ký tự khoảng trắng không bị phá vỡ &#160; nó làm việc

<TextBlock Text="6 or more characters, at least one letter and a number,&#160;&#160;&#160;&#160;&#160;&#160;&#160;" .... 

Tôi cho rằng bạn có thể thử xây dựng một công cụ chuyển đổi trên Text tài sản để kiểm tra các dấu không gian và thay thế bằng không gian không bị phá hủy - giả việc cắt ngắn xảy ra không xảy ra quá sớm.

+0

không gian không phá vỡ, nhưng tính năng 'không gian' rất dễ làm: ( –

+0

Cập nhật từ WinRT 8.1. 'Xml: space' vẫn không hoạt động, và giải pháp này có tác dụng. –

+4

Điều này (sử dụng  ) hiện KHÔNG có vẻ hoạt động trên ứng dụng Windows 10 Universal.Tôi đã phải đặt nó đơn giản là nội dung giữa các thẻ mở và đóng chứ không phải là thiết lập thuộc tính Text để làm cho nó hiển thị chính xác. Đã thử một số biến thể khác không có lịch phát sóng (\ u0020, #nbsp, v.v.) – matthewsheets

3

Hãy thử sử dụng xml:space="preserve":

<StackPanel Orientation="Horizontal" Margin="0,3,0,0"> 
    <TextBlock xml:space="preserve" Text="6 or more characters, at least one letter and a number, " FontFamily="Segoe UI" Foreground="#000000" FontSize="13"/> 
    <TextBlock xml:space="preserve" Text="no symbols" FontFamily="Segoe UI" Foreground="#000000" FontSize="13"/> 
</StackPanel> 
+0

+1 cho thuộc tính không gian. Nhưng điều đó không làm việc trong các ứng dụng lưu trữ –

9

Được giải quyết với <Run /> trong một <TextBlock />..

<StackPanel Orientation="Horizontal" Margin="0,3,0,0"> 
    <TextBlock FontFamily="Segoe UI" Foreground="#000000" FontSize="13"> 
     <Run Text="6 or more characters, at least one letter and a number, " /> 
     <Run Text="no symbols" /> 
    </TextBlock> 
</StackPanel> 

Và từ gói vẫn hoạt động

<StackPanel Orientation="Horizontal" Margin="0,3,0,0"> 
    <TextBlock FontFamily="Segoe UI" Foreground="#000000" FontSize="13" 
     Width="200" TextWrapping="Wrap"> 
     <Run Text="6 or more characters, at least one letter and a number, " /> 
     <Run Text="no symbols" /> 
    </TextBlock> 
</StackPanel> 

tôi sẽ dễ dàng sử dụng giải pháp của Jim (# 160;) nếu gói không phải là một vấn đề.

Trong suy nghĩ của bạn, hãy suy nghĩ về cách HTML xử lý và bảo tồn không gian. Đây cũng là cách XAML xử lý và bảo tồn không gian. Bạn sẽ nghĩ, tất nhiên, bên trong một TextBlock nó sẽ được xử lý theo nghĩa đen hơn, huh? Vâng, nó là những gì nó được. Ít nhất có một giải pháp.

+0

+1 Câu trả lời hay :) –

+0

Jerry tại sao tôi thực sự làm như vậy là khi ứng dụng của tôi ở chế độ bình thường, văn bản phải là ** '6 hoặc nhiều ký tự, ít nhất một chữ cái và một số, không có ký hiệu' ** và ở chế độ xem nhanh, phải có ** '6 ký tự trở lên, ít nhất một chữ cái và một số, không có ký hiệu' **. Tôi đã làm điều này. Nhưng tôi muốn rằng các văn bản này nên đến từ tập tin '.resw'. Nói cách khác làm thế nào tôi sẽ thiết lập văn bản trong ** ' ' ** giống như '' –

+0

Tôi đã đăng ** [câu hỏi liên quan đến điều này cũng ở đây] (http://stackoverflow.com/q/14343376/468724) ** –

0

RichTextBlock dường như để bảo vệ cả hàng đầu và dấu khoảng trắng (trong WP 8.1 WinRT):

<RichTextBlock> 
<RichTextBlock.Blocks> 
    <Paragraph > 
    <Paragraph.Inlines> 
    <Run Text="trailing " /><Run Text="bbb" /><Run Text=" leading" /> 
    </Paragraph.Inlines> 
    </Paragraph> 
</RichTextBlock.Blocks> 
</RichTextBlock> 

Nhưng nó cũng dường như thêm khoảng trống giữa chạy ngoài trong những người bạn chỉ định.

1

Tôi đã tìm thấy một giải pháp khác! \u+A0 hoạt động khi bạn C setNG đặt IsTextSelectionEnabled.

Tôi không biết tại sao điều này xảy ra, và đó là một bất ngờ hoàn toàn (tôi đã thêm trường này vì tôi vừa mới phát hiện ra nó trong khi đang làm việc trên 'Tại sao văn bản của tôi bị cắt bớt trong các ứng dụng Universal?').

Ngoài ra U+205F (không gian toán học trung bình) cũng hoạt động cùng với IsTextSelectionEnabled.

+0

Kể từ 2016-10-06, thủ thuật IsTextSelectionEnabled không hoạt động nữa, – rsclient