10

Tôi có một TextBlock với một dòng văn bản dài mà tôi muốn bọc. Tôi đã đặt TextBlock trong một ViewBox mong muốn kích thước văn bản thay đổi trong khi vẫn gói, tuy nhiên điều này dường như không xảy ra. ViewBox chỉ thay đổi kích thước TextBox để tất cả văn bản phù hợp trên một dòng làm cho văn bản thực sự nhỏ.TextBlock văn bản không bọc khi được đặt bên trong một ViewBox

Làm cách nào tôi có thể sử dụng Hộp xem để thay đổi kích thước văn bản trong khi vẫn sử dụng TextWrapping.

Đây là mã của tôi:

<Viewbox> 
    <TextBlock Text="The Option text can also dynamically grow/shrink to fit more content. More text to go here....................." TextWrapping="Wrap"/> 
</Viewbox> 

Đây là một phần của một ứng dụng lưu trữ Windows 8 như vậy là WinRT XAML.

+0

Có thể hữu ích [WPF: chúng ta có thể tạo ra một dòng hai trong ViewBox?] (Http: // xã hội. msdn.microsoft.com/Forums/vstudio/en-US/9dc8a7e3-e068-44e5-a363-85e8314f075d/wpf-can-we-make-a-two-line-in-the-viewbox) – Xyroid

+0

Không, điều đó không ' t làm việc nhưng nhờ cố gắng – Sun

+1

@ Xyroid của bài liên kết là chính xác mặc dù, bạn cần phải bằng cách nào đó cung cấp cho 'TextBlock' một' MaxWidth' để nó sẽ xác định rằng nó cần phải 'TextWrap'. Bạn có thể làm điều này bằng tay trong XAML hoặc bạn có thể làm một cái gì đó giống như trên 'Viewbox'' Loaded', tìm ra kích thước render và thiết lập '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. –

Trả lời

20

Chỉ cần đặt chiều rộng trên TextBlock.

 <Viewbox Width="500"> 
      <TextBlock Width="100" TextWrapping="Wrap">This is the text that's long and on two lines.</TextBlock> 
     </Viewbox> 

TextBlock with width 100 in ViewBox with width 500

Vì vậy, các ViewBox sẽ zoom in/out toàn bộ nội dung của nó. Nếu bạn không hạn chế nội dung của nó bằng cách đặt chiều rộng trên TextBlock, thì ViewBox sẽ cung cấp khoảng trống vô hạn để mở rộng. Bạn cũng có thể thêm một gốc Grid với chiều rộng và chiều cao trong các ViewBox và đặt các phần tử của bạn ra trong đó, sau đó toàn bộ lô sẽ được thu phóng theo chiều rộng của ViewBox.

Trong hình ảnh, chiều rộng của TextBlock 100 được thu phóng thành chiều rộng của ViewBox là 500. Vì vậy, để có được gói bạn muốn, chỉ cần tinh chỉnh chiều rộng TextBlock cho đến khi nó trông đẹp.

(Rõ ràng nó nên nói ba dòng nhưng tôi không tải lên lại chỉ cho điều đó)

+0

OK, điều đó có tác dụng nhưng tôi đang sử dụng textblock trong một DataTemplate văn bản khác nhau cho mỗi mục nên tôi không thể "tinh chỉnh" chiều rộng của hộp văn bản. – Sun

+0

Tất nhiên bạn có thể. Chỉ cần đặt chiều rộng cung cấp giao diện phù hợp cho mẫu văn bản. 'Viewbox' sẽ được định kích thước cho mục chứa mẫu và' TextBlock' sẽ mở rộng với gói. Tôi không biết những gì bạn đang cố gắng để đạt được nhưng có lẽ 'Viewbox' là một cá trích đỏ. Lấy nó ra. –

Các vấn đề liên quan