Domanda

I Gioggando con il nuovo modello di app universale di Windows Store che potrebbe essere utilizzato per Windows 8.1 e Windows Phone 8.1 e si stava chiedendo come formattare le stringhe nel codice XAML.

Cosa ho provato (XAML):

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

Il problema è che StringFormat non è disponibile in Windows.UI.Xaml.Controls.TextBox.

Microsoft ha creato un Progetto di esempio che si tratta di date di formattazione. Ma l'approccio utilizzato è basato sul codice (brutto) dietro.

Quindi, ecco la mia domanda:

    .
  • Perché StringFormat non è disponibile nelle app universali di Windows Store?
  • Come faccio a formaccare le stringhe usando solo il codice XAML?


Modifica: Ho deciso di andare con la soluzione convertitore, per quelli di interesse qui è il codice:

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

Sono felice per ogni singolo consiglio come migliorare il codice sopra, sentiti libero di commentare.

Grazie Mikael Dúi Bolinder e Martin Suchin per il tuo suggerimento / risposta.

È stato utile?

Soluzione

Databinting nei tipi di progetto di Windows Runtime non supporta la proprietà StringFormat, le opzioni che hai sono:

    .
  • Utilizzare la data già formattata come una proprietà Get-Solo nel tuo ViewModel .
  • Utilizzare il convertitore - puoi persino creare stringmatConverter in cui è possibile passare il formato DateTime come ConverterParameter . Ecco una soluzione Come tale StringFormatConverter potrebbe funzionare.
  • .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top