Frage

Ich habe mit der neuen Windows Store Universal App-Vorlage herumgespielt, die für Windows 8.1 und Windows Phone 8.1 verwendet werden kann, und habe mich gefragt, wie man Zeichenfolgen in XAML-Code formatiert.

Was ich versucht habe (XAML):

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

Das Problem ist, dass StringFormat ist nicht verfügbar in Windows.UI.Xaml.Controls.TextBox.

Microsoft hat eine erstellt Beispielprojekt Dabei geht es um die Formatierung von Datumsangaben.Aber der dort verwendete Ansatz basiert auf (hässlichem) Code dahinter.

Also, hier ist meine Frage:

  • Warum ist StringFormat nicht im Windows Store Universal Apps verfügbar?
  • Wie formatiere ich Zeichenfolgen nur mit XAML-Code?


BEARBEITEN:Ich habe mich für die Konverterlösung entschieden. Für diejenigen, die es interessiert, hier der 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();
    }
}

Ich freue mich über jeden einzelnen Tipp zur Verbesserung des obigen Codes. Kommentieren Sie ihn gerne.

Vielen Dank an Mikael Dúi Bolinder und Martin Suchan für Ihren Vorschlag/Ihre Antwort.

War es hilfreich?

Lösung

DataBinding in Windows-Runtime-Projekttypen unterstützt die StringFormat-Eigenschaft nicht. Folgende Optionen stehen Ihnen zur Verfügung:

  • Verwenden Sie das bereits formatierte Datum nur als Get-Only Eigenschaft in Ihrem ViewModel.
  • Verwenden Konverter - Sie können sogar einen StringFormatConverter erstellen, in dem Sie das DateTime-Format als übergeben können KonverterParameter. Hier ist eine Lösung wie ein solcher StringFormatConverter funktionieren könnte.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top