Question

Je joue avec le nouveau modèle d'application universelle du Windows Store qui pourrait être utilisé pour Windows 8.1 et Windows Phone 8.1 et je me demandais comment formater les chaînes dans le code XAML.

Ce que j'ai essayé (XAML) :

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

Le problème est que StringFormat n'est pas disponible dans Windows.UI.Xaml.Controls.TextBox.

Microsoft a créé un exemple de projet qui concerne le formatage des dates.Mais l’approche utilisée ici est basée sur du code (laid) derrière.

Voici donc ma question:

  • Pourquoi est-ce StringFormat non disponible dans les applications universelles du Windows Store ?
  • Comment formater des chaînes en utilisant uniquement le code XAML ?


MODIFIER:J'ai décidé d'opter pour la solution du convertisseur, pour ceux qui sont intéressés, voici le code :

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

Je suis heureux de recevoir chaque conseil sur la façon d'améliorer le code ci-dessus, n'hésitez pas à commenter.

Merci Mikael Dúi Bolinder et Martin Suchan pour votre suggestion/réponse.

Était-ce utile?

La solution

DataBinding dans les types de projets Windows Runtime ne prend pas en charge la propriété StringFormat, les options dont vous disposez sont :

  • Utiliser la date déjà formatée en accès uniquement propriété dans votre ViewModel.
  • Utiliser Convertisseur - vous pouvez même créer StringFormatConverter où vous pouvez transmettre le format DateTime comme Paramètres du convertisseur. Voici une solution comment un tel StringFormatConverter pourrait fonctionner.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top