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.

Foi útil?

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.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top