WP7

2011-01-14 25 views
9

पर XAML में किसी दिनांक को स्वरूपित करना क्या Windows Phone 7 के लिए XAML का उपयोग करके दिनांक प्रारूपित करने का कोई तरीका है?WP7

तो उपयोग करने की कोशिश:

<TextBlock Text="{Binding Date, StringFormat={}{0:MM/dd/yyyy}}" /> 

लेकिन मैं त्रुटि मिलती है:

संपत्ति 'StringFormat' प्रकार में 'बाध्यकारी'

उत्तर

20

SL4 के भीतर यह संभव है ...

<TextBlock Text="{Binding Date, StringFormat='MM/dd/yyyy'}}"/> 

... SL3 के भीतर आप एक IValueConverter का इस्तेमाल करते हैं की आवश्यकता होगी।

public class DateTimeToStringConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return String.Format("{0:MM/dd/yyyy}", (DateTime)value); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

आपको अधिक सुदृढ़ दृष्टिकोण चाहते हैं तो आप ConverterParameter का उपयोग कर सकता।

public class DateTimeToStringConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
       if (parameter == null) 
        return ((DateTime)value).ToString(culture); 
       else 
        return ((DateTime)value).ToString(parameter as string, culture); 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 

फिर अपने XAML में आप पहली बार एक संसाधन के रूप कनवर्टर परिभाषित करेगा ...

<namespace:DateTimeToStringConverter x:Key="MyDateTimeToStringConverter"/> 

..then DateTime मूल्य फ़ॉर्मेट करने के लिए इसे संदर्भ एक स्वीकार्य पैरामीटर के साथ ...

<TextBlock Text="{Binding Date, 
     Converter={StaticResource MyDateTimeToStringConverter}, 
     ConverterParameter=\{0:M\}}"/> 
+0

+1 हालांकि कुछ सुझाव के बाद से: एक के उपयोग का उदाहरण शामिल करें, एक वैकल्पिक प्रारूप स्ट्रिंग में पारित करने के लिए ConverterParameter के उपयोग, कक्षा एक नाम अधिक अपने कार्य के अनुरूप कहते हैं कि "DateTimeToStringConverter" में दे सकते हैं। – AnthonyWJones

+0

@ एंथनीWJones संपादन जोड़ा गया ... –

+0

मैं एक IValueConverter का उपयोग करने के खिलाफ दृढ़ता से अनुशंसा करता हूं। जिस संपत्ति को आप बाध्यकारी कर रहे हैं उसे उजागर करते समय सी # कोड की एक पंक्ति भी इस रूपांतरण को ही करेगी। – JustinAngel

2

जहाँ तक मुझे पता है StringFromat हूँ के रूप में नहीं मिला था सिल्वरलाइट 4 फ़ंक्शन है, विंडोज फोन 7.0 के लिए सिल्वरलाइट मूल रूप से सिल्वरलाइट 3 + कुछ अतिरिक्त है। मुझे तब नहीं लगता है।

+1

वर्क्स मैंगो –