Gewusst wie: Konvertieren von gebundenen Daten

Aktualisiert: November 2007

In diesem Beispiel wird gezeigt, wie die Konvertierung auf Daten angewendet wird, die in Bindungen verwendet werden.

Um Daten während einer Bindung zu konvertieren, müssen Sie eine Klasse erstellen, die die IValueConverter-Schnittstelle implementiert, die wiederum die Methoden Convert und ConvertBack einschließt.

Beispiel

Im folgenden Beispiel wird die Implementierung eines Datenkonverters gezeigt, der den übergebenen Datenwert so konvertiert, dass nur Jahr, Monat und Tag angezeigt werden. Beim Implementieren der IValueConverter-Schnittstelle sollten Sie die Implementierung mit einem ValueConversionAttribute-Attribut ergänzen, um den Entwicklungstools die Datentypen anzuzeigen, die in die Konvertierung einbezogen sind, wie im folgenden Beispiel:

[ValueConversion(typeof(DateTime), typeof(String))]
public class DateConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        DateTime date = (DateTime)value;
        return date.ToShortDateString();
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string strValue = value.ToString();
        DateTime resultDateTime;
        if (DateTime.TryParse(strValue, out resultDateTime))
        {
            return resultDateTime;
        }
        return value;
    }
}

Sobald Sie einen Konverter erstellt haben, können Sie ihn als Ressource zur Extensible Application Markup Language (XAML)-Datei hinzufügen. Im folgenden Beispiel wird dem Namespace, in dem DateConverter definiert ist, src zugeordnet.

<src:DateConverter x:Key="dateConverter"/>

Abschließend können Sie den Konverter in der Bindung mit der folgenden Syntax verwenden. Im folgenden Beispiel wird der Textinhalt für den TextBlock an StartDate gebunden; dabei handelt es sich um eine Eigenschaft einer externen Datenquelle.

<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,8,0"
           Name="startDateTitle"
           Style="{StaticResource smallTitleStyle}">Start Date:</TextBlock>
<TextBlock Name="StartDateDTKey" Grid.Row="2" Grid.Column="1" 
    Text="{Binding Path=StartDate, Converter={StaticResource dateConverter}}" 
    Style="{StaticResource textStyleTextBlock}"/>

Die Stilressourcen, auf die im Beispiel oben verwiesen wird, werden im Ressourcenabschnitt des Beispiels definiert, das in diesem Thema nicht gezeigt wird. Das vollständige Codebeispiel, aus dem die obigen Codebeispiele stammen, finden Sie unter Demo für die Datenbindung.

Siehe auch

Aufgaben

Gewusst wie: Implementieren der Bindungsvalidierung

Konzepte

Übersicht über Datenbindung

Weitere Ressourcen

Beispiel zur Datenbindung

Gewusst-wie-Themen zur Datenbindung