2010-12-01 12 views
30

क्या हम बाध्यकारी अभिव्यक्ति में दो गुणों को एक साथ जोड़ सकते हैं? यदि कनवर्टर के बिना या दो टेक्स्टब्लॉक लिखने और उन्हें व्यक्तिगत रूप से सेट किए बिना संभव है?क्या हम डेटा बाध्यकारी में दो गुणों को जोड़ सकते हैं?

+0

यहां एक नज़र डालें http://stackoverflow.com/questions/541896/concatenate-strings-instead-of-using-a-stack-of-textblocks –

उत्तर

13

अल्फा माउस की तरह चलता है MultiBinding बॉक्स से बाहर काम नहीं करेगा, लेकिन इस आदमी को एक साथ कुछ दिया है मदद कर सकता है कि:

http://www.olsonsoft.com/blogs/stefanolson/post/Improvements-to-Silverlight-Multi-binding-support.aspx

कि थोड़ा बदमाश लगता है, तो हो सकता है हैं एक संयुक्त मूल्य संपत्ति की तरह बाध्यकारी तंत्र के लिए एक सहायक के रूप में अपने वस्तु पर डाल, कोशिश:

public string FullName { 
    get { return this.FirstName + " " + this.LastName; } 
} 
+10

'<रन टेक्स्ट =" ... "/ ><रन टेक्स्ट = "..." /> 'एक क्लीनर एक्सएएमएल-केवल समाधान है (नीचे दूसरा जवाब देखें)। – qJake

6

MultiBinding और स्ट्रिंगफॉर्मैट की सहायता से WPF में यह संभव है। लेकिन दुर्भाग्यवश सिल्वरलाइट में नहीं।

3

आप एक गेटर कि संयोजन करता है के साथ एक नया संपत्ति जोड़ सकते हैं।

कहें कि आपके पास FirstName और LastName गुण हैं। इस प्रकार फिर आप एक Name संपत्ति को परिभाषित कर सकते हैं:

public string Name { get { return FirstName + " " + LastName; } } 

यह अच्छी तरह से काम करेंगे, लेकिन आप जानते हैं कि आप दो तरह से, रीड-ओनली संपत्ति के लिए बाध्यकारी नहीं कर सकते होना चाहिए। इसके अलावा आप स्रोत गुणों के लिए सेटर्स में समेकित संपत्ति के लिए संपत्ति बदली गई अधिसूचना को कार्यान्वित करना चाह सकते हैं।

79

आप दिखाना चाहते हैं, तो FirstName और LastName, एक भी TextBlock में कहते हैं, तो आप इस तरह कर सकते हैं:

<TextBlock> 
    <Run Text="{Binding FirstName}" /> 
    <Run Text=" " /> <!-- space --> 
    <Run Text="{Binding LastName}" /> 
</TextBlock> 

अब, TextBlock के Text संपत्ति "Sachin Tendulkar" हो जाएगा और प्रदर्शित किया जाएगा यदि:

FirstName = Sachin 
LastName = Tendulkar 

आशा है कि मदद करता है।

+4

वास्तव में मुझे क्या चाहिए। धन्यवाद! – MattAitchison

+0

आप प्रत्येक रन कथन में> पहले/भूल गए थे। अन्यथा, मुझे बहुत मदद की! – swinefeaster

+1

जीनियस सादगी है! –

2

यदि आपको कोई स्ट्रिंग जोड़ने की आवश्यकता है, तो इसे आज़माएं। विंडोज फोन में बाइंडिंग टेक्स्ट के बाद मैं "%" जोड़ता हूं।

<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/> 
8
<TextBlock.Text> 
    <MultiBinding StringFormat="{}{0} , {1}"> 
    <Binding Path="data1" /> 
    <Binding Path="data2" /> 
    </MultiBinding> 
</TextBlock.Text> 

data1 और data2 स्ट्रिंग गुण जो आबद्ध कर रहे हैं।

+2

यह एक अच्छा समाधान है, क्योंकि यह 'DataGrid.TextColumn' जैसे अधिक जटिल घटकों के लिए काम करेगा। – Casper

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

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