Datum formatieren

In diesem Blog gehe ich kurz auf die Neuen Formatierungsmöglichkeiten in der Datenbindung bei Silverlight 4 ein. Früher (also Silverlight 3 ) müsste man in der Regel einen Converter implementieren und bei der Bindung angeben um Datumswerte passend zu formatieren. Nun gibt es das Attribut Stringformat das auf die in .NET üblichen Formatexpressions zurück greift.

Formatausdrücke (Formatexpressions)

http://msdn.microsoft.com/de-de/library/dwhawy9k(v=VS.80).aspx

Datum und Zeit Formatausdrücke

http://msdn.microsoft.com/de-de/library/az4se3k1(v=VS.80).aspx

Für mein Beispiel binde ich eine Person Klasse an das Layoutroot UIElement.

Private Sub page31_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
        Dim p As New person With {.datum = Date.Now}
        LayoutRoot.DataContext = p

End Sub

Dann wird in XAML zb die verkürzte Zeit Syntax verwendet.

   <TextBlock Text="{Binding datum,StringFormat=t}"
                   Width="300" Height="30" Margin="0,0,67,258"/>

Wenn nun das Ergebnis ein Englisches Format ist lässt sich durchaus überraschend über das Attribut ConverterCulture ein anderes Culture Schema erzwingen.

<TextBlock Text="{Binding datum,StringFormat=t,ConverterCulture=de-DE}"
                   Width="300" Height="30" Margin="0,0,67,258"/>

Alternativ kann man die formatierung natürlich auch direkt maskieren.

 <TextBlock Text="{Binding datum,StringFormat=mm:ss}"
                   Width="300" Height="30" Margin="0,0,67,258"/>

Für Sonderzeichen die z.B. in XAML enthalten sind müssen die entsprechenden Entitys eingesetzt werden.

<TextBlock Text="{Binding datum,StringFormat=mm&gt;ss}"

Width="300" Height="30" Margin="0,0,67,258"/>

Es scheint auch eine beinahe grundlegend andere Syntax zu funktionieren, die man meist in WPF Dokus findet.

<TextBlock Text="{Binding datum,StringFormat=\{0:t\}}"
                   Width="300" Height="30" Margin="0,0,67,258"/>

Jedenfalls gehts bei mir in Silverligth 4. Alle Samples sind in VB.NET und C# getestet. Dies und anderes in meinen Schulungen und Kursen zu Silverlight, bzw auf der APPs-konferenz.

Kommentar schreiben