2012-03-09 2 views
13

यह एक अपेक्षाकृत सरल सवाल यह है:TextTrimming और एक बृहदान्त्र

:

<TextBlock Text="{Binding}" TextTrimming="CharacterEllipsis"/> 

यह मेरे की तर्ज पर कुछ देना होगा:

मैं का उपयोग कर इस अंडाकार के साथ एक पाठ ट्रिम कर सकते हैं

"यह वाक्य बहुत लंबा है"

=>

"यह वाक्य मैं ... ... "/" यह वाक्य: यह वाक्य ... "

क्या मैं के लिए देख रहा हूँ:"

कि सभी महान और dandy है, लेकिन यह है कि क्या मैं वास्तव में चाहते हैं कि " अंडाकार के बाद एक कोलन है। क्या इसे हासिल करने का कोई आसान तरीका है?

संपादित करें:

भ्रम के लिए खेद है।

मैं डिफ़ॉल्ट इलिप्सिस स्ट्रिंग को '...' से '...:' में बदलना चाहता हूं। साथ ही, मैं पाठ स्ट्रिंग में एक कोलन शामिल करने जा रहा हूं। इस तरह, मैं हमेशा कोलन प्रदर्शित होगा। साथ ही, हर स्थिति में सबकुछ एक पंक्ति पर होना चाहिए। ...

रास्ता भी एल:

इतना छोटा हो:

यहाँ परिणाम है कि स्वीकार्य हैं के एक जोड़े हैं

+0

आप [TextWrapping] भ्रमित कर रहे हैं (http://msdn.microsoft.com/en-us/ लाइब्रेरी/system.windows.controls.textblock.textwrapping.aspx) और [TextTrimming] (http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.texttrimming.aspx)। – Clemens

+0

लॉल हां। मैंने xaml -_- – FZdev

+0

की गलत रेखा की प्रतिलिपि बनाई है "[मैं कैसे निर्धारित कर सकता हूं कि मेरा टेक्स्टब्लॉक टेक्स्ट छंटनी जा रहा है?] (http://stackoverflow.com/questions/1041820/how-can-i-determine-if -मेरे-TextBlock-पाठ है से किया जा रहा-छंटनी) "। वहां से इसे पूरा करना संभव होना चाहिए। – hennson

उत्तर

19

यह काम करता है, लेकिन मैं कुछ गद्दी जोड़ने के लिए इतना है कि पेट के हमेशा दिखाई देती रहती है की जरूरत:

<TextBlock Padding="0,0,5,0" > 
    <TextBlock TextTrimming="CharacterEllipsis">Lorem ipsum dolor sit amet, consectetur adipisicing </TextBlock> 
    <TextBlock>:</TextBlock> 
</TextBlock> 
+0

उह, यह बहुत अच्छा काम करता है सिवाय इसके कि कुछ बिंदुओं पर, ऐसा लगता है कि कोलन टेक्स्टब्लॉक टेक्स्ट टेक्स्टब्लॉक द्वारा छुपाया जाता है। भले ही, यह सबसे आसान कामकाजी स्थिति है। – FZdev

+0

हां, मैंने सोचा कि पैडिंग को जोड़कर इसे हल किया गया है। मुझे आशा है कि आप इसे दूसरे टेक्स्टब्लॉक पर पैडिंग कर सकते हैं। – Phil

+0

रैपर का पैडिंग निश्चित रूप से मदद करता है (वास्तव में यह सभी अन्य कंटेनरों के साथ था)। कोलन टीबी के बाईं ओर पैडिंग जोड़ने से वास्तव में यह आपके कार्यान्वयन से काम करता है। शायद मूल्यों के साथ झुकाव करके और किन पक्षों को पैडिंग लागू करने के लिए लागू किया जा सकता है; यह अभी प्रयास के लायक नहीं है हालांकि आपका उदाहरण डेमो प्रयोजनों के लिए पर्याप्त है। – FZdev

2

उपयोग पहली और में बृहदान्त्र में दीर्घवृत्त उदाहरण के साथ दो TextBlocks दूसरा।

अद्यतन:

ऐसा लगता है कि यह जटिलताओं के बहुत सारे के साथ एक अपेक्षाकृत सरल सवाल है।

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

सिर्फ एक कस्टम पैनल कार्यान्वित करने के बाद मैं एक संभव समाधान एक से तीन बच्चों जो abovel

एक कस्टम पैनल से विरासत में मिला दो प्रमुख तरीकों ओवरराइड करना चाहिए पैनल वर्णित तीन TextBlocks किया जाएगा धारण करने के लिए तैयार किया गया है शामिल कल्पना कर सकते हैं: उपाय और व्यवस्था ।

माप विधि में सभी बच्चों को मापा जाना चाहिए।

व्यवस्थित विधि में जांच करें कि पहले दो बच्चों को प्रदर्शित करने के लिए पर्याप्त जगह है या नहीं और यदि ऐसा है तो उन्हें एक तरफ रखें। यदि पर्याप्त कमरा नहीं है तो पहले बच्चे का आकार तीसरे बच्चे के कमरे को प्रदर्शित करने और तीसरे बच्चे को सही गठबंधन करने की अनुमति देने के लिए आकार दिया गया है।

अद्यतन:

मैं कस्टम पैनल की कोशिश की और यह पहली बार पाठ बॉक्स को छोड़कर काम किया क्लिप आंशिक वर्ण है।

स्वच्छ स्वरूपण के लिए अंतिम समाधान एक विधि होगी जो उपयुक्त स्ट्रिक्स के साथ आवंटित स्थान के भीतर फिट होने तक प्रदर्शन स्ट्रिंग को समायोजित करेगी।

+0

और हमेशा कोलन प्रदर्शित करते हैं, भले ही कोई इलिप्सिस न हो? – Clemens

+0

क्लेमेंस - भ्रम के लिए खेद है, लेकिन मैं चाहता हूं कि कोलन हमेशा डॉग दिखाएं - आमतौर पर वह प्रभाव है जो मैं चाहता हूं। मैंने इसे आजमाया है और कुछ चौड़ाई पर, कोलन अगली पंक्ति में गिर जाता है। यह पर्याप्त अच्छा नहीं है। दो textblocks एक listboxitem के अंदर एक dockpanel के अंदर एक क्षैतिज wrappanel में हैं। wrappanel के बाईं ओर एक छवि नियंत्रण डॉक किया गया है। – FZdev

+0

@FZdev तो आप केवल दो टेक्स्टब्लॉक को एक क्षैतिज डॉकपैनल में क्यों नहीं डालते हैं, पहले कॉलन टेक्स्टब्लॉक पहले और दूसरा ट्रिम किए गए टेक्स्टब्लॉक और दोनों पर 'डॉकपैनेल.डॉक' के लिए उचित मान। इस प्रकार डिफ़ॉल्ट रूप से छंटनी टेक्स्टब्लॉक कॉलन द्वारा उपभोग की जाने वाली सभी जगहों को भरता है। या इससे भी बेहतर, एक ग्रिड का उपयोग करें। – Clemens

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