2009-02-02 5 views
9

तो मैं एक HTML परिप्रेक्ष्य से डब्ल्यूपीएफ में आ रहा हूं।एक्सएएमएल में कैसे कहना है: डिफ़ॉल्ट चौड़ाई और ऊंचाई उदा। टेक्स्टबॉक्स

मैं सिर्फ इस तरह मेरी खिड़की पर एक TextBox रखना चाहता हूँ:

<Grid> 
    <TextBox Name="theName" /> 
</Grid> 

बाहर कर देता है कि TextBox तो विशाल है, पूरे खिड़की को शामिल किया गया।

ठीक है, कि मैं क्या चाहते हैं नहीं है, लेकिन मैं सटीक आकार को परिभाषित नहीं करना चाहते या तो के बाद से मैं Height और Width लचीला होना चाहिए पता है, तो मैं कोशिश (!):

<TextBox Name="theName" Width="Auto" Height="Auto"/> 

यही बात । तो मैं कोशिश करता हूं:

<TextBox Name="theName" 
    HorizontalAlignment="Stretch" 
    VerticalAlignment="Stretch"/> 

वही बात। तो मैं बस आकारों को कड़ी मेहनत करता हूं:

<TextBox Name="theName" Width="100" Height="20"/> 

जो मुझे पता है डब्ल्यूपीएफ में एक अच्छा प्रोग्रामिंग अभ्यास नहीं है।

तो, आप TextBox को "फ़ॉन्ट आकार के उपयोग के लिए डिफ़ॉल्ट आकार प्रदर्शित करने" के लिए कैसे कहते हैं?

उत्तर

9

आप ब्रायन के उदाहरण को और भी थोड़ा आगे ले सकते हैं। एक विशिष्ट संरेखण निर्दिष्ट करके जो खिंचाव नहीं है और टेक्स्टबॉक्स को और बाधित करता है ताकि वह किसी निश्चित आकार से आगे नहीं बढ़े। उदाहरण के लिए:

<Grid x:Name="LayoutRoot"> 
     <TextBox HorizontalAlignment="Left" VerticalAlignment="Top" Text="TextBox" TextWrapping="Wrap" 
     MinWidth="15" MinHeight="20" MaxWidth="500" MaxHeight="50"/> 
</Grid> 

आप ग्रिड के अंदर पंक्तियां/स्तंभ की स्थापना और उन्हें विभिन्न फैशन में बाधित द्वारा आगे भी ले जा सकते हैं। जैसा कि आप एक HTML पृष्ठभूमि से आ रहे हैं, इसके बारे में सोचें कि लेआउट को नियंत्रित करने के लिए टेबल का उपयोग करना। याद रखें कि आप अन्य कंटेनर ऑब्जेक्ट्स भी घोंसला कर सकते हैं (यानी स्टैकपैनल्स, रैपपैनल्स, अन्य ग्रिड इत्यादि ...)।

एक्सएएमएल और डब्ल्यूपीएफ/सिल्वरलाइट नियंत्रणों के साथ चुनौती यह है कि वे बहुत ही लचीला हैं, इसलिए आपको सभी विकल्पों पर एक हैंडल प्राप्त करना होगा और वे लेआउट को कैसे प्रभावित करेंगे।

शुभकामनाएं। मैं अब इस सटीक चीज़ के माध्यम से जा रहा हूं।

6

एक अलग कंटेनर का उपयोग करें। ग्रिड हमेशा ग्रिड सेल को भरने के लिए अपने बच्चे के नियंत्रण को छूता है।

आप उदाहरण का उपयोग कर सकते हैं एक स्टैक्पेनल जो केवल एक दिशा में अपने नियंत्रण को छूता है।

+0

चेतावनी का एक बिंदु। जबकि एक स्टैकपैनल केवल एक ही दिशा में बाल नियंत्रण को फैलाता है, जब तक कि आप उस बच्चे की वस्तु को स्पष्ट रूप से बाधित न करें, तब स्टैकपैनल उन बच्चों की वस्तुओं को उस दिशा में infinte स्पेस प्रदान करता है। कुछ नियंत्रणों के साथ असामान्य साइड इफेक्ट्स का कारण बन सकता है। –

3

स्टीफन का उल्लेख करते हुए एक अलग पैनल का उपयोग करने के अलावा आप टेक्स्टबॉक्स को एक संरेखण दे सकते हैं जो स्ट्रेच नहीं है। जैसे

<TextBox Name="theName" HorizontalAlignment="Left" VerticalAlignment="Top"/> 
2

डब्ल्यूपीएफ में आकार पिक्सेल नहीं हैं, वे "डिवाइस स्वतंत्र पिक्सल" हैं जो एक इंच के 1/96 हैं - इसलिए आज के सामान्य डीपीआई सेटअप में वे 1: 1 पिक्सेल मैप करते हैं।

लेकिन, यदि आप उच्च डीपीआई मोड में प्रोग्राम चलाते हैं तो टेक्स्टबॉक्स डीपीआई (और फ़ॉन्ट) के साथ बढ़ेगा।

तो हार्ड-कोडित आकार सेट करना बुरा नहीं है।

इसके अलावा आप केवल क्षैतिज एलाइनमेंट और वर्टिकल एलाइनमेंट का उपयोग कर सकते हैं जो "खिंचाव" नहीं है, इससे टेक्स्टबॉक्स को सामग्री में आकार दिया जाएगा - लेकिन फिर एक खाली टेक्स्टबॉक्स छोटा होगा।

आप लगभग एक पंक्ति की स्वचालित ऊंचाई प्राप्त करने के लिए "केंद्र", "शीर्ष" या "नीचे" के लिए वर्टिकल एलाइनमेंट सेट कर सकते हैं (संभवत: छोटे फोंट की समस्याओं से बचने के लिए मिनीहेइट सेटिंग द्वारा समर्थित) और फिर चौड़ाई सेट करें टेक्स्टबॉक्स चौड़ाई बदलती नहीं है क्योंकि उपयोगकर्ता इसमें टाइप करता है।

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