2012-08-07 39 views
9

मैं अपने विंडो शीर्षक में मेरे व्यूमोडेल से एक संपत्ति और संसाधन फ़ाइल से नामित एक मान को जोड़ना चाहता हूं।स्ट्रिंगफॉर्मैट डाटाबेसिंग और संसाधन के मान को संगत करता है

xmlns:res="clr-namespace:Project.View.Resources" 
{res:Strings.TitleDescription} 
:

Title="Binding Path=Description, StringFormat=Building: {0}}" 

अब मैं "बिल्डिंग" स्ट्रिंग को हटाने और एक संसाधन से एक मूल्य डाल जैसे मैं अन्य स्थानों पर उपयोग करना चाहते हैं: यह है कि मैं क्या संसाधनों से स्ट्रिंग के बिना काम किया है

मैं दोनों को कैसे परिभाषित कर सकता हूं? क्या मैं एक {1} पैरामीटर की तरह परिभाषित कर सकता हूं?

उत्तर

15

हाँ, आप कर सकते हैं। बस MultiBinding का उपयोग करें।

StringFormat पर एमएसडीएन आलेख एक उदाहरण है।

आपके मामले में, कोड कुछ इस तरह दिखेगा:

<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding StringFormat="{}{0} {1}"> 
     <Binding Source="{x:Static res:Strings.TitleDescription}"/> 
     <Binding Path="Description"/> 
     </MultiBinding> 
    </TextBlock.Text> 
    </TextBlock> 
+0

एक स्थिर संसाधन के लिए बहुआयामी? इसके बारे में कभी नहीं सुना: एस – Louro

+0

मुझे तब गलत समझा जा सकता है, "स्थैतिक संसाधन" से आपका क्या मतलब है? क्या यह एक वर्ग की स्थिर संपत्ति है? यदि ऐसा है, तो मेरा मानना ​​है कि उन लोगों को बाध्य करने के लिए समर्थन .NET 4.5 – madd0

+0

में नया है, मैंने प्रश्न अपडेट किया है। मैं अपने .resx संसाधन से एक मान का उपयोग करना चाहता हूँ। मुझे नहीं लगता कि मैं इसे बाध्यकारी के साथ कर सकता हूं ... – Louro

7

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

<TextBlock Text="{Binding Description, StringFormat={x:Static res:Strings.TitleDesc}}" /> 

और TitleDesc संसाधन जाहिर "Building: {0}" है।

+0

इस उत्तर के लिए उपरोक्त। मल्टीबिंडिंग्स –

+1

का उपयोग करने से बहुत आसान धन्यवाद, मैं '{}' के साथ संसाधनों में स्ट्रिंग को उपसर्ग करने की गलती कर रहा था। इसके अलावा मुझे कुछ भी चाहिए \\ पथ \ {0} 'तो मैं जो कुछ भी समाप्त कर रहा था वह .resx फ़ाइल में था '\\\\ पथ \\ {0}' - बैकस्लाश से बचने के लिए आवश्यक है – stambikk