2015-12-01 2 views
7

Кто-нибудь знает, как отформатировать дату при использовании x: Привязать в приложении UWP Windows 10?Строковый формат с использованием UWP и x: Bind

У меня есть привязка TextBlock (x: Bind) к свойству DateTime на моем ViewModel, который считывается из SQL. Я хочу отформатировать вывод на «dd/MM/yyy HH: mm (ddd)». Есть ли простой способ сделать это?

Формат по умолчанию: «dd/MM/yyy HH: mm: ss», который, как я полагаю, исходит из значения по умолчанию. Может быть, это возможно заменить?

Спасибо.

ответ

17

Используйте StringFormatConverter (проверьте, если вы, возможно, использовать некоторые библиотеки, которая уже включает в себя это, например, Cimbalino Toolkit):

public class StringFormatConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     if (value == null) 
      return null; 

     if (parameter == null) 
      return value; 

     return string.Format((string)parameter, value); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 

добавить его на страницу ресурса

<Page.Resources> 
    <converters:StringFormatConverter x:Key="StringFormatConverter" /> 
</Page.Resources> 

и использовать его как это

<TextBlock Text="{x:Bind Text, Converter={StaticResource StringFormatConverter}, ConverterParameter='{}{0:dd/MM/yyy HH\\\\:mm (ddd)}'}" /> 
+0

Отлично. Большое спасибо сиббл. Работает. –

1

Вы можете использовать

{x:Bind ViewModel.DateTimeProperty.ToString("....")} 
+1

Вы уверены, что до тех пор, пока вы нацелитесь на Creators Update –

+1

В моем случае не работает, потому что компилятор интерпретирует, что я вызываю перегрузку ToString (IFormatProvider), поэтому я бы назвал перегрузку (string, IFormatParameter) this: {x: Bind ViewModel.DateTimeProperty.ToString ('...', {x: Null})} – joseangelmt

Смежные вопросы