2011-01-14 17 views
9

Czy istnieje sposób na sformatowanie daty przy użyciu XAML dla Windows Phone 7?Formatowanie daty w XAML na WP7

Jeśli spróbował wykorzystać:

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

Ale pojawia się błąd:

Nieruchomość 'StringFormat' nie została znaleziona w rodzaju 'Binding'

Odpowiedz

20

ciągu SL4 jest to możliwe ...

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

... wewnątrz SL3 trzeba by skorzystać z 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(); 
    } 
} 

Jeśli chcesz bardziej zdecydowane podejście można skorzystać z 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(); 
     } 
    } 

Następnie w XAML byś najpierw zdefiniować konwertera jako zasób ...

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

..then odwołać go wraz z dopuszczalnym parametru do formatowania wartości DateTime ...

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

+1 jednak kilka sugestii: Dołącz Przykład użycia sprawiają, że korzystanie z ConverterParameter przejść w alternatywnym formacie ciąg podać nazwę klasy A bardziej zgodne z jego funkcji powiedzieć „DateTimeToStringConverter”. – AnthonyWJones

+0

@AnthonyWJones Edytowane dodaje ... –

+0

Zdecydowanie zaleca się, aby nie używać IValueConverter. Jedna linia kodu C# ujawniająca właściwość, która również jest opcją, również wykona tę konwersję. – JustinAngel

2

O ile jestem świadomy StringFromat jest funkcją Silverlight 4, Silverlight dla Windows Phone 7.0 to w zasadzie Silverlight 3 + niektóre dodatki. Chyba nie.

+1

Works od Mango –