2010-10-24 11 views
11

मेरे पास टेक्स्टब्लॉक्स का संग्रह है जो मैं दिखा रहा हूं और मुझे अलग-अलग प्रदर्शित होने के लिए प्रत्येक टेक्स्टब्लॉक के पाठ की आवश्यकता है। मैं वर्तमान में टैग प्रॉपर्टी में प्रारूप स्ट्रिंग को सहेज रहा हूं और मुझे इस प्रारूप में टेक्स्ट प्रदर्शित करने की आवश्यकता है। मैं स्ट्रिंगफॉर्मेट सेक्शन कैसे बांधूं?बाध्यकारी स्ट्रिंगफॉर्मैट

कुछ नीचे अनुभाग की तरह:

<TextBlock Tag="{Binding MyFormatString}" Text="{Binding MyProperty, StringFormat='{}{0:MyTag}'}" />

उत्तर

18

BindingBase.StringFormat के बाद से एक निर्भरता संपत्ति नहीं है, मुझे नहीं लगता है कि आप इसे बाध्य कर सकते हैं करते हैं। स्वरूपण स्ट्रिंग भिन्न होता है, तो मुझे डर है कि आप इस

<TextBlock Text="{Binding MyFormattedProperty}" /> 

की तरह कुछ का सहारा और आपके विचार मॉडल में स्वरूपण करना होगा हूँ। वैकल्पिक रूप से, आप एक MultiBinding और एक कनवर्टर (उदाहरण के कोड अपरीक्षित) इस्तेमाल कर सकते हैं:

<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding Converter="{StaticResource myStringFormatter}"> 
      <Binding Path="MyProperty" /> 
      <Binding Path="MyFormatString" /> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

public class StringFormatter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 
     return string.Format((string)values[1], values[0]); 
    } 
    ... 
} 
0

स्ट्रिंग स्वरूपण एक प्रदर्शन सेटिंग है और इसलिए यूआई परत के पास रहते हैं चाहिए, तो आप Xaml में यह घोषणा कर सकते हैं या तो या है एक ViewModel पर स्वरूपित स्ट्रिंग गुण और उन गुणों के प्राप्त में स्वरूपण निष्पादित करें और TextMlock को ViewModel गुणों को बाध्य करें। यह मूल डेटा स्रोत से अपना डेटा स्रोत करेगा।

1
<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding StringFormat="{}{0},{1}"> 
      <Binding Path="MyProperty" /> 
      <Binding Path="MyFormatString" /> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 
संबंधित मुद्दे