2010-09-26 15 views
6

मैं एक TextBlock जो दिए गए स्थान (कम वर्ण बड़ा पत्र और इसके विपरीत) के भीतर संभव अधिकतम फ़ॉन्ट आकार मेंWPF TextBlock जूम और रैप

  1. शो पाठ की जरूरत है
  2. भीतर पाठ लपेट है दी गई जगह

मैंने नीचे दिए गए व्यूबॉक्स के अंदर एक टेक्स्टबॉक्स का उपयोग करने की कोशिश की लेकिन टेक्स्ट-रैपिंग काम नहीं करती अगर मैं टेक्स्टब्लॉक चौड़ाई और ऊंचाई निर्दिष्ट नहीं करता हूं। यदि मैं व्यूबॉक्स के समान आकार की चौड़ाई और ऊंचाई निर्दिष्ट करता हूं, तो स्पष्ट रूप से ज़ूमिंग नहीं होती है।

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

क्या इसे स्वीकार करने का कोई और तरीका है? या क्या मुझे टेक्स्ट की मात्रा के आधार पर मैन्युअल रूप से फ़ॉन्ट आकार बढ़ाने के लिए एल्गोरिदम लिखने के बारे में सोचना चाहिए? किसी भी मदद की सराहना की है।

+0

आप मैन्युअल PreviewKeyDown या PreviewKeyUp घटना से निपटने के द्वारा लाइन ब्रेक करते हैं और जाँच लें कि अपने पाठ की लंबाई सीमा पर पहुँच गया था सकता है। एक ही परिणाम प्राप्त करने का एक और तरीका: एक कस्टम कनवर्टर बनाएं और वहां लाइन ब्रेक करें। आप अधिकतम पैरामीटर निर्दिष्ट करने के लिए पैरामीटर पास कर सकते हैं या फ़ील्ड का उपयोग कर सकते हैं। – 0xbadf00d

उत्तर

0

इस कोड को आज़माएं।

XAML:

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

पीछे कोड:

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