2010-10-20 17 views
13

मेरे अनुप्रयोगों दुकान सभी स्थानीयकृत लेख एक स्ट्रिंग संसाधन शब्दकोश में के रूप में यहाँ http://msdn.microsoft.com/en-us/library/bb295251(VS.85).aspxगाड़ी वापसी स्ट्रिंग संसाधन के लिए WPF में

 <ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:system="clr-namespace:System;assembly=mscorlib"> 

    <!-- String resource that can be localized --> 
    <system:String x:Key="localizedMessage">en-US Message</system:String> 

</ResourceDictionary> 

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

इस इनलाइन करने से काम करता है:

<TextBlock Name="test" Text="Line 1&#13;Line 2"> </TextBlock> 

हालांकि, एक स्ट्रिंग संसाधन में &#13; का उपयोग कर काम नहीं करता। एक स्ट्रिंग संसाधन में एक नई लाइन जोड़ने का सबसे अच्छा तरीका क्या है?

उत्तर

17

अद्यतन: अद्यतन जवाब - बेहतर विकल्प

XAML पार्सर सामान्यीकृत खाली स्थान के निम्नलिखित नियमों के अनुसार।

http://msdn.microsoft.com/en-us/library/cc189036(VS.95).aspx#whitespace

अपने sys:String निर्देश देने के लिए खाली स्थान के संरक्षित करने के लिए, यह करने के लिए xml:space="preserved लागू होते हैं:

<sys:String x:Key="MyLocalizedString" xml:space="preserve">this&#13;&#10;is&#13;&#10;my&#13;&#10;resource</sys:String> 
+0

स्थानीयकृत स्ट्रिंग विकल्प काम करता है, लेकिन बाध्यकारी अभिव्यक्ति थोड़ा बदसूरत है। –

+0

हां। लेकिन यह वही है जो आप फंस गए हैं - यह अच्छा होगा अगर आप स्थानीयकृत स्ट्रिंग प्रकार पर एक स्पष्ट या निहित रूपांतरण ऑपरेटर प्रदान कर सकें और पार्सर इसे उठाए, लेकिन ऐसा नहीं है। मैं एक संलग्न संपत्ति से जुड़े एक और अधिक जटिल विकल्प दिखा सकता हूं, लेकिन मुझे यकीन नहीं है कि यह लंबे समय तक बेहतर होगा। –

+0

संलग्न संपत्ति विकल्प के साथ उपरोक्त उत्तर अद्यतन किया गया। –

11

जब आप संसाधन ध्यान में रखते हुए एक स्ट्रिंग संसाधन प्रवेश कर रहे हैं आप से टकराने के लिए Shift + द्वारा CR/वामो जोड़ सकते हैं दर्ज। यह नई लाइन जोड़ देगा और आप इसे देख पाएंगे। संसाधन स्ट्रिंग को पुनर्प्राप्त करना और टेक्स्ट ब्लॉक पर टेक्स्ट के रूप में सेट करना, फिर नईलाइन (या एकाधिक न्यूलाइन) को पुन: उत्पन्न करने के वांछित प्रभाव उत्पन्न करेगा। मेरे मामले में मैं एक ही पाठ ब्लॉक में दो पैराग्राफ अनुकरण करना चाहता था। मुझे अन्य दृष्टिकोण पसंद नहीं आया क्योंकि इसे दो तारों से निपटने के लिए दूसरी भाषा में अनुवाद की आवश्यकता थी। मैं इसे एक एकल स्ट्रिंग संसाधन के रूप में पेश करना चाहता था ताकि अनुवादक का पूरा संदर्भ हो जो वे अनुवाद कर रहे थे।

+0

सरल और सुंदर! – OneWorld

+0

यह उत्तर स्वीकार्य उत्तर होना चाहिए – philologon

+0

यह मेरे लिए काम किया। चयनित उत्तर से रास्ता आसान है। –

0

तो, यह स्पष्ट रूप से थोड़ी देर हो गया है लेकिन मेरी स्थिति में उन लोगों के लिए शायद यह मदद करेगा। मेरे मामले में, मैं संसाधन स्ट्रिंग लोड करने के लिए एक स्टैंड-अलोन एक्सएमएल संसाधन फ़ाइल जहां मैं पहले से ही उपयोग कर रहा था ...

var strVal = (string)Application.Current.FindResource(key); 
return strVal; 

था ... मेरे अपने सहायक वर्ग के भीतर। इसलिए मेरे लिए आसान समाधान के रूप में इस बस की जगह के लिए एक कॉल सम्मिलित करने के लिए किया गया था:

var strVal = (string)Application.Current.FindResource(key); 
strVal = strVal.Replace(@"\n", Environment.NewLine); 
return strVal; 

मेरी StringResources.xaml से मेरे उदाहरण इस प्रकार है \ N के रूप में मेरे भागने चरित्र का उपयोग करने की अनुमति देता है ....

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       xmlns:system="clr-namespace:System;assembly=mscorlib"> 

    <system:String x:Key="resKeyValue1">The source field "{0}" is already mapped to the destination field "{1}".\n\n 
    Do you want to additionally map the source field "{0}" to the destination field "{2}"?</system:String> 

    ... 
</ResourceDictionary> 
संबंधित मुद्दे