mi diverto con il nuovo modello di app universale per Windows Store che potrebbe essere utilizzato per Windows 8.1 e Windows Phone 8.1 e mi chiedevo come formattare le stringhe nel codice XAML.Come formattare una data in un'app di Windows Store Universal (W8.1 + WP8.1)?
quello che 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 sample project che riguarda esclusivamente le date di formattazione. Ma l'approccio usato lì è basato sul (brutto) codice dietro.
Quindi, ecco la mia domanda:
- Perché
StringFormat
non è disponibile in Windows Store universale Apps? - Come posso formattare le stringhe usando solo il codice XAML?
EDIT: 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 singola consigli su come migliorare la codice sopra, sentiti libero di commentare.
Grazie a voi Mikael Dúi Bolinder e Martin Suchan per il vostro suggerimento/risposta.
Forse dovresti creare un convertitore? –
Sì, sarebbe un'opzione ma non voglio farlo prima di ora che non c'è altro (migliore) modo di farlo. – Joel
Come hai collegato il convertitore al markup? Tutte le mie combinazioni di STaticResource, Relative ... ecc. Falliscono tutte. Nota a margine: Trovo ridicolo che StringFormat manchi. È 2014 e .NET 4.5. Di tutte le riunioni che avevano su Windows Phone 8.1, nessuno ha richiamato la formattazione delle date sui controlli DataBound? –