2012-12-27 18 views
6

मैं एक TextBlock है:एक टेक्स्टब्लॉक पर नियमित पाठ कैसे संलग्न करें जिसमें पहले से ही अपनी टेक्स्ट प्रॉपर्टी के लिए बाध्यकारी है?

<TextBlock x:Name="someText" Text="{Binding ElementName=theList, Path=SelectedItem.Name, Mode=TwoWay}" /> 

और जैसा कि आप देख सकते हैं, यह एक और तत्व के चयनित आइटम के लिए बाध्य है। अब, बस यह कहें कि, उदाहरण के लिए, चयनित आइटम "हैलो," कहता है। और मैं अपना नाम उसमें जोड़ना चाहता हूं (एक्सएएमएल में, कोड-बैक नहीं), ताकि यह इस तरह पढ़ सके: "हैलो, एरो।"। मैं यह कैसे कर सकता हूँ?

उत्तर

3

इस कॉन्फ़िगरेशन के साथ आप केवल एक ही चीज चुन सकते हैं जिसमें चयनित आइटम में टेक्स्ट है।

<StackPanel Orientation="Horizontal"> 
    <TextBlock x:Name="someText" 
     Text="{Binding ElementName=theList, 
         Path=SelectedItem.Name, 
         Mode=TwoWay}" /> 
    <TextBlock x:Name="suffixText"/> 
</StackPanel> 

इस विन्यास के साथ आप suffixText किसी भी तरह से आप चाहते हैं प्रदान करते हैं और परिणाम आप देख रहे हैं प्राप्त कर सकते हैं: तो, मैं क्या सिफारिश करेंगे इन पंक्तियों के साथ कुछ और है।

0

आपको इसके लिए एक मल्टीवैल्यू कनवर्टर बनाने की आवश्यकता है जो दो तारों को जोड़ती है। आप उन तारों को xaml से कनवर्टर तक पारित कर सकते हैं। अधिक विवरण देखने के article

10

इस प्रयास करें: मेट्रो XAML पर अभी तक

<TextBlock x:Name="someText" TextWrapping="NoWrap">    
    <Run Text="{Binding ElementName=theList, Path=SelectedItem, Mode=TwoWay}" /> 
    <Run Text=" Arrow." /> 
</TextBlock> 

XAML समाधान उपलब्ध नहीं:

आप StringFormat उपयोग कर सकते हैं:

<TextBlock x:Name="someText" Text="{Binding ElementName=theList, Path=SelectedItem, Mode=TwoWay, StringFormat={}{0} Arrow.}" /> 

इसके अलावा, आप MultiBinding और StringFormat उपयोग कर सकते हैं :

<TextBlock> 
    <TextBlock.Text> 
      <MultiBinding StringFormat="{}{0} Arrow."> 
       <Binding ElementName="theList" Path="SelectedItem.Name" />      
      </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 
+1

स्ट्रिंगफॉर्मैट के लिए: 'प्रॉपर्टी 'स्ट्रिंगफॉर्मैट' प्रकार बाध्यकारी में नहीं मिला था। और 'मल्टी बाइंडिंग विंडोज मेट्रो स्टाइल प्रोजेक्ट में समर्थित नहीं है।' – Arrow

+4

@ एरो आप सही हैं। रन के साथ मेरा पहला समाधान आज़माएं। – kmatyaszek

+3

एकाधिक 'रन' के साथ एक 'टेक्स्टब्लॉक' निश्चित रूप से इसके लिए जाने का तरीका है। –