In vielen Fällen kommt es vor das, dass Format was man von
einer Datenquelle erhält, nicht der passende Formatierung für den Anzeigezweck
entspricht. Man kann natürlich die Datenquelle anpassen oder die ToString()Methoden
Überschreibt. Aber die kann man auch eleganter über einen Konverter erreichen.
Um einen Konverter für eine Type zu erstellen kann man sich
des Interfaces IValueConverter bedienen.
Diese Interface bedingt die Methode Convert und ConvertBack
und können im XAML beim Binding der Datenquelle wie folgt verwendet werden.
< UserControl.Resources>
<Converter:DateTimeConverter x:Key="DateTimeConverter" />
</UserControl.Resources>
<GridViewColumn
EntryDateMember ="{Binding Path=EntryDate, Converter={StaticResource DateTimeConverter}}" />
Die zugehörige C# Klasse kann mit folgendem Listing
verwendet werden.
public class DateTimeConverter : IValueConverter{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
return ((DateTime)value).ToString("dd.MM.yyyy");
}
else
{
return String.Empty
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return DateTime.Parse(value.ToString());
}
}
Im diesem Beispiel wird das Entrittsdatum im Format “dd.MM.yyyy”
zurückgegen. Man kann diese Konverter Klassen auf Bedingungsprüfungen
verwenden, um Beispielsweise die Darstellung des Textes zu verändern über
Abhängigkeiten der Datenquelle.
Im Beispiel wird die Schriftdicke durch einen Booleschen Wert bestimmt.
Im Beispiel wird die Schriftdicke durch einen Booleschen Wert bestimmt.
public class BooleanToFontWieghtConverter
: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
string ret = "Normal";
if((bool)value)
{
ret = "ExtraBold";
}
return ret;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return value.ToString().Equals("ExtraBold");
}
}
Für weiter Informationen siehe MSDN IValueConverter-Schnittstelle
Keine Kommentare:
Kommentar veröffentlichen