2015-09-17 7 views
5

में TextBlock की व्हाइटस्पेस संरक्षित करने के लिए आप बस के रूप में एक TextBlock में पाठ संपत्ति का मूल्य निर्धारित करते हैं तो "उदाहरण      " (ध्यान दें कि इस स्ट्रिंग के अंत पर 3 व्हाइटस्पेस) , यूआई में टेक्स्टब्लॉक शो क्या है "उदाहरण"।कैसे UWP क्षुधा

और इंटरनेट पर समाधान के लिए खोज करने के बाद, मैंने पाया इस समस्या को हल करने के लिए एक तरह से है कि वहाँ:

<Border BorderThickness="1" 
     BorderBrush="#FFFF0202" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center"> 
    <TextBlock x:Name="t1"> 
     <Run Text="Example&#160;&#160;&#160;"/> 
    </TextBlock> 
</Border> 

ऊपर कोड रन की पाठ में TextBlock की इनलाइन संपत्ति और &#160; के उपयोग को प्रदर्शित करता है से पता चलता सफेद जगह सही ढंग से।

हालांकि, मेरे मामले im मैं में कोड-पीछे (या DataBinding के माध्यम से) TextBlock का पाठ गुण सेट करने की जरूरत है, चाल से काम नहीं होता और यह यूआई में Example&#160;&#160;&#160; को दर्शाता है।

मैंने डेटा बाइंडिंग द्वारा रन की टेक्स्ट प्रॉपर्टी का मान सेट करने का प्रयास किया, जो मुझे लगता है कि बचने वाले चरित्र को सही तरीके से प्रदर्शित कर सकते हैं, लेकिन रन की टेक्स्ट प्रॉपर्टी निर्भरता प्रॉपर्टी नहीं है इसलिए मेरे पास इसे हल करने का कोई बेहतर तरीका नहीं है।

(हालांकि मुझे लगता है कि TextBlock के उपयोग गद्दी संपत्ति भी यह करने के लिए एक चाल है, और यह काम करना चाहिए। लेकिन वहाँ करने के लिए कोई बेहतर तरीका है?)

उत्तर

6

पहले, Run.Text समर्थन बाध्यकारी डेटा करता है।

कारण &#160; डेटा बाइंडिंग के अंदर सही ढंग से प्रिंट नहीं करता है क्योंकि यह एक्सएमएल से बचने वाले वर्णों का उपयोग कर रहा है।

बजाय (char)160 उपयोग करने का प्रयास -

public string TestString { get; set; } = "Example" + (char)160 + (char)160 + (char)160; 

<TextBlock> 
    <Run Text="{x:Bind TestString}" /> 
</TextBlock> 
1

आप में संरक्षित करने के लिए xml:space संपत्ति की स्थापना की कोशिश कर सकते अपने XAML

<TextBox Name="t1" 
     xml:space="preserve" 
     Text="Example " /> 
+1

धन्यवाद लेकिन UWP क्षुधा में यह doens't काम करते हैं। – JuniperPhoton

+0

यदि आप ' हैलो<चलाएं xml: space =" संरक्षित करें "> दुनिया! 'हैलो * और * दुनिया * के बीच की जगह संरक्षित है अगर केवल और 'xml: space' विशेषता सेट है। तो एक्सएमएल: स्पेस = "संरक्षित" यूडब्लूपी में काम करता है लेकिन यह वास्तव में अपेक्षित के रूप में टेक्स्टब्लॉक से चलाने के लिए प्रचारित नहीं होता है। मुझे लगता है कि इस पर सबसे प्रासंगिक दस्तावेज एमएसडीएन [एक्सएएमएल में व्हाइटस्पेस प्रोसेसिंग] है (https://msdn.microsoft.com/en-us/library/ms788746%28v=vs.110%29.aspx)। –

+0

मैंने हाल ही में विजुअल स्टूडियो 2017 स्थापित किया है और देखा है कि बग ठीक किया गया था और अब 'xml: space =" संरक्षित "दस्तावेज के रूप में काम करता है: आप इसे '' तत्व के किसी भी माता-पिता पर निर्दिष्ट कर सकते हैं जैसे' 'या यहां तक ​​कि ' 'और यह' 'के अंदर सफेद स्थान को ट्रिमिंग और ढहने से रोक देगा। –

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