Menü 1 für Einsteiger: Daten bei Datenbindung formatieren
Das Anzeigen der Daten unter Silverlight ist ein gängiges Verfahren, bei dem man jedoch schnell auf folgendes Problem stößt: Die Daten werden auf der Oberfläche nicht so angezeigt wie es dem Entwickler lieb wäre. Zum Beispiel ist ein Datumswert im englischen Datumsformat in der Datenbank hinterlegt, jedoch erwartet man auf der Oberfläche wie gewohnt ein deutsches Datumsformat. Bisher wurde dafür ein eigenständiger ValueConverter geschrieben, der das Interface IValueConverter beinhaltet. Ab Silverlight 4 können einfache und gängige Formatierungen ohne zusätzlichen ValueConverter direkt im XAML deklariert werden.Als Beispiel wird ein Kalender-Steuerelement mit zwei TextBox-Steuerelementen gebunden (Listing 1). Die erste TextBox zeigt den ausgewählten Datumswert vom Typ DateTime direkt an. Bei der zweiten TextBox wird einfach ein StringFormat mit der Definition „D“ hinzugefügt. Beim Starten und Testen der Anwendung fällt sofort auf, dass nun auf der zweiten TextBox das Datum direkt mit den Wochentag angezeigt wird, allerdings nicht auf Deutsch. Um das zu erreichen, muss ein zusätzlicher ConverterCulture mit der gewünschten Sprache hinzugefügt werden.
<StackPanel><sdk:Calendar x:Name="calendar" /><TextBlock Text="Ohne StringFormat:" /><TextBox Width="200" Height="25" Text="{Binding ElementName=calendar, Path=SelectedDate}" /><TextBlock Text="Mit StringFormat:" /><TextBox Width="200" Height="25" Text="{Binding ElementName=calendar, Path=SelectedDate, ConverterCulture=de-DE, StringFormat=D}" /></StackPanel>
Dem StringFormat wird durch die Zeichensetzung so deklariert, wie die Formatierung aufgebaut werden soll (Abb. 1). Eine Auflistung aller Formatierungsmöglichkeiten findet sich in den Tabellen 1 bis 4 und zusätzliche Informationen zu Standard Date and Time Format Strings und Custom Date and Time Format Strings gibt es auf MSDN.
|
Definition |
Ergebnis bei: Oktober 08, 2010, 11:30:45 PM |
|
StringFormat=f |
Freitag, Oktober 08, 2010 11:30 PM” |
|
StringFormat=g |
10/08/2010 11:30 PM |
|
StringFormat=m |
Oktober 08 |
|
StringFormat=y |
Oktober, 2010 |
|
StringFormat=t |
11:30 PM |
|
StringFormat=u |
2010-10-08 23:30:45Z |
|
StringFormat=o |
2010-10-08T23:30:45.0000000 |
Tabelle 1: Feste Formatierungsmöglichkeiten mit StringFormat für Datumswerte
|
Definition |
Ergebnisse für: Oktober 08, 2010, 11:30:45 PM |
|
StringFormat=’MM/dd/yy’ |
10/08/2010 |
|
StringFormat=’MMMM dd, yyyy g’ |
Oktober 08, 2010 A.D. |
|
StringFormat=’hh:mm:ss.fff tt’ |
23:30:45.000 PM |
Tabelle 2: Benutzerdefinierte Formatierungsmöglichkeiten mit StringFormat für Datumswerte
|
Definition |
Ergebnisse beim String: Silverlight |
|
StringFormat=\{0\,20\} |
Silverlight |
|
StringFormat=’Ich liebe "\{0\}".’ |
Ich liebe „Silverlight“. |
Tabelle 3: Formatierungsmöglichkeiten mit StringFormat für Stringwerte
|
Definition |
Ergebnisse bei der Zahl: 38293.53 |
|
StringFormat=c |
,293.53 |
|
StringFormat=e |
3.829353e+004 |
|
StringFormat=n |
38,293.53 |
|
StringFormat=\{0:c0\} |
,294 |
|
StringFormat=\{0:n4\} |
38,293.5300 |
|
StringFormat=Sie haben \{0:c1\} |
Sie haben ,293.5 |
Tabelle 4: Formatierungsmöglichkeiten mit StringFormat für Zahlenwerte




