Pregunta

I Jugando con la nueva plantilla de aplicación Universal de Windows Store que podría usarse para Windows 8.1 y Windows Phone 8.1 y se estaba preguntando cómo formatear cadenas en el código XAML.

Lo que intenté (XAML):

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

El problema es que StringFormat no está disponible en Windows.UI.Xaml.Controls.TextBox.

Microsoft ha creado una Proyecto de muestra que se trata de fechas de formato. Pero el enfoque utilizado allí se basa en el código (feo) detrás.

Entonces, aquí está mi pregunta:

  • ¿Por qué StringFormat no está disponible en las aplicaciones universales de Windows Store?
  • ¿Cómo formatea las cadenas utilizando solo código XAML?


Editar: Decidí ir con la solución del convertidor, para aquellos de interés aquí es el código:

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();
    }
}

Estoy feliz por cada consejo sobre cómo mejorar el código anterior, siéntase libre de comentar.

Gracias Mikael Dúi Bollinder y Martin Suchan por su sugerencia / respuesta.

¿Fue útil?

Solución

Databinding en Windows Runtime Project Tipos de proyectos no admite la propiedad StringFormat, las opciones que tiene son:

  • Uso Fecha ya formateada como una propiedad de GET-SOLO en su ViewModel .
  • use convertidor : incluso puede crear StringFormatConverter donde puede pasar el formato DateTime como converterParameter . Aquí hay una solución cómo podría funcionar tal cirdormatconverter.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top