Como formatar uma data em uma Windows Store App Universal (W8.1 + WP8.1)?
-
21-12-2019 - |
Pergunta
eu brincando com a nova Windows Store App Universal modelo que poderia ser usado para o Windows 8.1 e Windows Phone 8.1 e queria saber como cadeias de caracteres de formato no código XAML.
O que eu tentei (XAML):
<TextBlock Text="{Binding TestItem.CurrentDate, StringFormat={}{0:MM/dd/yyyy}}" />
O problema é que StringFormat
não está disponível em Windows.UI.Xaml.Controls.TextBox
.
A Microsoft criou um exemplo de projeto o que é tudo sobre formatação de datas.Mas a abordagem utilizada é baseada em (feio) código de trás.
Então, aqui está a minha Pergunta:
- Por que é
StringFormat
não disponível no Windows Store Aplicativos Universal? - Como faço para cadeias de caracteres de formato usando o Código XAML só?
EDITAR: Eu decidi ir com o conversor de solução, para aqueles de interesse aqui está o 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();
}
}
Estou feliz por todos conselhos de como melhorar o código acima, sinta-se livre para comentar.
Obrigado Mikael Dúi Bolinder e Martin Suchan por sua sugestão/resposta.
Solução
A ligação de dados no tempo de execução do Windows tipos de projeto não suporta StringFormat propriedade, os opções que você tem são:
- Já a utilizar data formatada como um só a propriedade em sua ViewModel.
- Utilização Conversor de - você pode até mesmo criar StringFormatConverter onde você pode passar o formato de data / hora como ConverterParameter. Aqui está uma solução como tal StringFormatConverter poderia trabalhar.