2010-09-26 35 views
6

Tôi đã một TextBlock mà cần phảiWPF TextBlock zoom và quấn

  1. chương trình văn bản trong kích thước phông chữ tối đa có thể trong không gian nhất định (nhân vật ít chữ lớn hơn và ngược lại)
  2. quấn văn bản trong không gian đã cho.

Tôi đã thử sử dụng hộp văn bản bên trong hộp xem như dưới đây nhưng gói văn bản không hoạt động nếu tôi không chỉ định chiều rộng và chiều cao của textblock. Nếu tôi chỉ định chiều rộng và chiều cao cho cùng kích thước với hộp xem, rõ ràng việc thu phóng không xảy ra.

<Viewbox Stretch="Fill" Width="100" Height="100"> 
<TextBlock TextWrapping="Wrap"/> 
</Viewbox> 

Có cách nào khác để đạt được điều này không? Hay tôi nên nghĩ đến việc viết một thuật toán để tăng kích thước phông chữ theo cách thủ công dựa trên số lượng văn bản? Bất kỳ trợ giúp nào được đánh giá cao.

+0

Bạn bằng tay có thể làm ngắt dòng bằng cách xử lý sự kiện PreviewKeyDown hoặc PreviewKeyUp và kiểm tra xem giới hạn độ dài của văn bản đã đạt được. Một cách khác để đạt được kết quả tương tự: Tạo một Trình chuyển đổi tùy chỉnh và thực hiện ngắt dòng ở đó. Bạn có thể chuyển một tham số hoặc sử dụng một trường để xác định MaxLength. – 0xbadf00d

Trả lời

0

Hãy thử mã này.

XAML:

<TextBlock x:Name="textBlock" 
      Text="Something text" 
      TextWrapping="Wrap" 
      FontSize="1" 
      Width="100" 
      Opacity="0" /> 

Mã đằng sau:

while (textBlock.ActualHeight <= 100) 
{ 
    textBlock.FontSize += 0.1; 
    textBlock.UpdateLayout(); 
} 
textBlock.FontSize -= 0.1; 
textBlock.Opacity = 1;