2009-04-09 17 views
16

मुझे एक उपयोगकर्ता नियंत्रण मिला है (नीचे), मैं डेटा को डेटास्रोत में बाध्य कर रहा हूं और उपयोगकर्ता नियंत्रण का एक समूह स्थापित कर रहा हूं।आपके पास सिल्वरलाइट फिट करने के लिए पाठ सामग्री का आकार कैसे बदलता है?

मैं चाहता हूं कि पाठ का आकार सबसे बड़ा संभव हो जो अभी भी नियंत्रण की सीमाओं में फिट होगा। विंडोज प्रोग्रामिंग में, मैं फ़ॉन्ट आकार को घटाने के पाठ आकार को माप सकता हूं जब तक कि यह लक्ष्य आयामों तक फिट न हो जाए।

क्या सिल्वरलाइट में ऐसा करने का कोई तरीका है?

मुझे पता है कि मैं संभवतः ऐसा कर सकता हूं, लेकिन क्या ऐसा करने के लिए कोई 'अच्छा' तरीका है?

<Grid x:Name="gdBubble" Width="180" Height="95"> 
    <Ellipse x:Name="elBubble" Fill="#FFFFA300" /> 
    <TextBlock x:Name="txtContent" Text="{ Binding ClientName }" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
</Grid> 

[मैं एक ग्रिड यहाँ क्रम में केंद्र के लिए TextBlock के लिए सही ढंग से उपयोग कर रहा हूँ।] के रूप में रिच एक Viewbox उपयोग करने के लिए वर्णित

जवाब था।

इस जीत विन्यास (मेरे लिए) था:

<Grid x:Name="gdBubble" Width="180" Height="95"> 
    <Ellipse x:Name="elBubble" Fill="#FFFFA300" /> 
    <controls:Viewbox Margin="10,10,10,10" VerticalAlignment="Stretch" Height="Auto"> 
     <TextBlock x:Name="txtContent" FontSize="18" Text="{ Binding ClientName }" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
    </controls:Viewbox> 
</Grid> 
+2

मैं वास्तव में आश्चर्यचकित हूं कि इस समस्या के साथ अन्य लोगों को नहीं मिला है। निश्चित रूप से किसी गतिशील डेटास्रोत के लिए कोई डेटाबेस जिसमें पाठ शामिल है, इस समस्या का है? क्या कस्टम बटन के लिए टेक्स्टब्लॉक्स का उपयोग किया जा रहा है? –

उत्तर

21

कल एक समान प्रश्न पूछा गया था कि एक कंटेनर के आकार के सापेक्ष सामग्री का आकार बदलना। इस मामले में जवाब वही है: एक व्यूबॉक्स का उपयोग करें। यदि आप व्यूबॉक्स के अंदर अपना टेक्स्टब्लॉक डालते हैं, तो टेक्स्टब्लॉक स्वयं को उस स्थान का उपयोग करने के लिए आकार बदल देगा, और व्यूबॉक्स कंटेनर के आयामों को खींचने में संभाल देगा। चार खींचने के तरीकों में से एक में से चुनने के लिए खिंचाव विशेषता का उपयोग करें।

WPF Gui that changes size with window?

+0

बाहर निकलता है मैं इसे गलत तरीके से उपयोग कर रहा था :) –

+0

अच्छी चीजें रिच, मेरे पीछे बचाया। +1 :) –

0

एक ग्रिड के बजाय एक Dockpanel की कोशिश करो। LastChildFill = true का उपयोग करके आपको वह व्यवहार मिलना चाहिए जिसे आप ढूंढ रहे हैं।

+0

मैं टेक्स्टब्लॉक के बाद एलिप्स के शीर्ष पर सभी उपलब्ध स्थान भरने के बाद हूं, डॉकपैनेल का उपयोग करके दोनों के बीच उपलब्ध क्षेत्र को विभाजित कर दिया जाएगा। –

+0

एक डॉकपैनल के अलावा फ़ॉन्ट के आकार को विस्तारित स्थान में अधिकतम स्वीकार्य तक विस्तारित नहीं किया जाएगा, भले ही टेक्स्टब्लॉक के आयामों का विस्तार हो। मुझे संदेह है कि यह करना मुश्किल होगा ... –

+0

यदि आप डॉकपनेल के ऊपरी हिस्से में अंडाकार को डॉक करते हैं तो इसे आकार बदलना नहीं चाहिए। हालांकि, पाठ आकार के बारे में जोन का बिंदु अभी भी नहीं बदल रहा है। –

0

आप ScaleTransform को बदलने में देखा है:

कल से इस सूत्र पर एक नजर डालें?

ib।

+0

हालांकि मैन्युअल रूप से आकार बदलने के लिए यह आसान हो सकता है, मुझे नहीं लगता कि यह जवाब है। –

संबंधित मुद्दे