10

i zabawy z nowym szablonem aplikacji Windows Store Universal, który może być używany dla Windows 8.1 i Windows Phone 8.1 i zastanawiałem się, jak sformatować ciągi w kodzie XAML.Jak sformatować datę w uniwersalnej aplikacji Windows Store (W8.1 + WP8.1)?

co starałem (XAML):

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

Problemem jest to, że StringFormat nie jest dostępny w Windows.UI.Xaml.Controls.TextBox.

Firma Microsoft utworzyła sample project, która dotyczy dat formatowania. Ale stosowane tam podejście oparte jest na (brzydkim) kodzie.

Tak, tu jest moje pytanie:

  • Dlaczego StringFormat nie jest dostępny w systemie Windows Store Uniwersalnego Apps?
  • Jak sformatować ciągi tylko przy użyciu kodu XAML?


EDIT: postanowiłem pójść z roztworem kalkulator dla tych odsetek Oto kod:

public class DateConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     if (value == null) 
      return null; 

     if (!(value is DateTime)) 
      return null; 

     var dateTime = (DateTime)value; 

     var dateTimeFormatter = new DateTimeFormatter(YearFormat.Full, 
      MonthFormat.Full, 
      DayFormat.Default, 
      DayOfWeekFormat.None, 
      HourFormat.None, 
      MinuteFormat.None, 
      SecondFormat.None, 
      new[] { "de-DE" }, 
      "DE", 
      CalendarIdentifiers.Gregorian, 
      ClockIdentifiers.TwentyFourHour); 

     return dateTimeFormatter.Format(dateTime); 
    } 

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

Jestem szczęśliwy dla każdego porad jak poprawić kod powyżej, prosimy o komentarz.

Dziękuję Mikaelowi Dúi Bolinderowi i Martinowi Suchanowi za sugestię/odpowiedź.

+1

Może powinieneś stworzyć konwerter? –

+0

Tak, byłaby to opcja, ale nie chcę tego robić, zanim nie mam innego (lepszego) sposobu na zrobienie tego. – Joel

+1

W jaki sposób powiązałeś konwerter w znacznikach? Wszystkie moje kombinacje STaticResource, Relative .. itd. Kończą się niepowodzeniem. Na marginesie: wydaje mi się, że brakuje StringFormat. Jest 2014 i .NET 4.5. Ze wszystkich spotkań, które odbyły się w systemie Windows Phone 8.1, nikt nie zapoznał się z formatowaniem dat na kontrolkach DataBound? –

Odpowiedz

7

DataBinding w systemie Windows Runtime typów projektów nie obsługuje właściwość StringFormat opcje masz to:

  • Wykorzystanie już sformatowana jako data get-tylko nieruchomości w swoim ViewModel.
  • Użyj Konwerter - można nawet utworzyć StringFormatConverter, w którym można przekazać format DateTime jako KonwerterParametr. Here's a solution jak mógł działać taki StringFormatConverter.