Donnerstag, 24. Mai 2012


Artikel

Februar 2011 | Artikel

Daten bei Datenbindung formatieren, XAP-Datei vor Hijacking schützen, Page Navigation

(Link zum Artikel: http://www.entwickler.de/dotnet//003581)

Kolumne: Silverlight Expertise

Text: Gregor Biswanger
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share
Die Silverlight-Serie „Silverlight Expertise“ des dot.NET Magazins präsentierte bisher monatlich zwei How-tos zum Thema Silverlight, sodass Einsteiger und Fortgeschrittene Silverlight-Experten durch geballtes Wissen gesättigt werden. Ab sofort kommt jeweils noch ein How-to zur Windows-Phone-7-Entwicklung hinzu, sodass heute folgende Menüpunkte auf der Karte stehen: „Daten bei Datenbindung formatieren“, „XAP-Datei vor Hijacking schützen“ und „Page Navigation“. Viel Spaß dabei.
Teil 1   Teil 2   Teil 3   

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.

  1. <StackPanel>
  2. <sdk:Calendar x:Name="calendar" />
  3. <TextBlock Text="Ohne StringFormat:" />
  4. <TextBox Width="200" Height="25" Text="{Binding ElementName=calendar, Path=SelectedDate}" />
  5. <TextBlock Text="Mit StringFormat:" />
  6. <TextBox Width="200" Height="25" Text="{Binding ElementName=calendar, Path=SelectedDate, ConverterCulture=de-DE, StringFormat=D}" />
  7. </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 &quot;\{0\}&quot;.’

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

Teil 1   Teil 2   Teil 3   

andere Artikel dieser Serie

Kommentare