2015-12-01 12 views
7

Kann jemand ein Datum formatieren, wenn Sie x: Bind in einer UWP Windows 10 App verwenden?String-Format mit UWP und x: Bind

Ich habe einen TextBlock, der (X: Bind) an eine DateTime-Eigenschaft in meinem ViewModel gebunden ist, die aus SQL gelesen wird. Ich möchte die Ausgabe auf "TT/MM/JJJ HH: mm (ddd)" formatieren. Gibt es eine einfache Möglichkeit, dies zu tun?

Das Standardformat ist "TT/MM/JJJ HH: MM: SS", was vermutlich von einem Standard stammt. Könnte das vielleicht ersetzt werden?

Danke.

Antwort

17

Verwenden Sie ein StringFormatConverter (überprüfen, ob Sie vielleicht etwas Bibliothek verwenden, die es bereits enthält, zB die 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(); 
    } 
} 

fügen Sie es Ihrer Seite Ressource

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

und es verwenden, wie Diese

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

Perfekt. Vielen Dank sibbl. Funktioniert gut. –

1

können Sie

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

Sie können sicher, solange Sie Creators Update –

+1

Targeting in meinem Fall funktioniert nicht, weil der Compiler interpretiert, dass ich die ToString (IFormatProvider) Überladung aufrufen, so würde ich die (String, IFormatParameter) Überladung wie aufrufen dies: {x: Bind ViewModel.DateTimeProperty.ToString ('...', {x: Null})} – joseangelmt