2010-12-09 12 views
40

साथ मैं इस तरह someting करने के लिए StringFormat उपयोग करना चाहते हैं:StringFormat और Multibinding लेबल

<Label x:Name="myLabel"> 
    <Label.Content> 
     <Multibinding StringFormat="{}{0} - {1}"> 
      <Binding Path="Lib1" /> 
      <Binding Path="Lib2" /> 
     </MultiBinding> 
    </Label.Content> 
</Label> 

हालांकि, यह है काम नहीं करता है और मैं इस त्रुटि के बजाय मिल गया:

MultiBinding कारण विफल इसमें कोई वैध कनवर्टर नहीं है। मल्टीबाइंडिंग एक्सप्रेशन: लक्ष्य तत्व 'लेबल' है (नाम = 'myLabel'); लक्षित संपत्ति 'सामग्री' है (प्रकार 'ऑब्जेक्ट')

क्या यह कोड काम करने का कोई तरीका है?

उत्तर

94

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

<Label x:Name="myLabel"> 
    <Label.Content> 
     <TextBlock> 
      <TextBlock.Text> 
       <MultiBinding StringFormat="{}{0} - {1}"> 
        <Binding Path="Lib1" /> 
        <Binding Path="Lib2" /> 
       </MultiBinding> 
      </TextBlock.Text> 
     </TextBlock> 
    </Label.Content> 
</Label> 
+1

यह वही है जो मैं कहने जा रहा था, और यह पोस्ट यह भी पुष्टि करता है: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c60b90e6-8426-4c2b-a547-eaa92920862f – Tom

+1

धन्यवाद, मैं लेबल के बजाय टेक्स्टब्लॉक का उपयोग करूंगा। पहला समाधान भी काम करता है, लेकिन मुझे लगता है कि दूसरा अधिक सुरुचिपूर्ण है। – Filimindji

+4

+1 बाद वाला समाधान भी लेबल की शैली को विरासत में लेता है, जो कि 'टेक्स्टब्लॉक' शैली को स्टाइल करने के लिए परेशान नहीं किया जा सकता है, जो एक छोटा बोनस है। –

3

उन लोगों के लिए भी Leom बर्क के जवाब से <Label.Content> टैग छोड़ सकते हैं: आप के बजाय एक TextBlock का उपयोग कर (जो एक पाठ संपत्ति है) या लेबल के बच्चे के रूप में TextBlock डालने या तो द्वारा इस के आसपास मिल सकती है । यह कोड की एक और दो पंक्तियों को बचाता है।

<Label x:Name="myLabel"> 
    <TextBlock> 
     <TextBlock.Text> 
      <MultiBinding StringFormat="{}{0} - {1}"> 
       <Binding Path="Lib1" /> 
       <Binding Path="Lib2" /> 
      </MultiBinding> 
     </TextBlock.Text> 
    </TextBlock> 
</Label> 
0
<Label> 
    <AccessText> 
     <MultiBinding StringFormat="{x:Static properties:Resources.MyText}"> 
     <Binding Path="MyObj.MyProp" Mode="OneTime"/> 
     </MultiBinding> 
    </AccessText> 
</Label> 

कहाँ Resources.MyText कुछ भी धारण कर सकते हैं की तरह "फॉक्स से अधिक {0} कूदता है।"

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

  • कोई संबंधित समस्या नहीं^_^