Freigeben über


Vorgehensweise: Konvertieren gebundener Daten

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

Zum Konvertieren von Daten während der Bindung müssen Sie eine Klasse erstellen, die die IValueConverter Schnittstelle implementiert, die die methoden Convert und ConvertBack enthält.

Beispiel

Das folgende Beispiel zeigt die Implementierung eines Datumskonverters, der den übergebenen Datumswert konvertiert, sodass nur das Jahr, der Monat und der Tag angezeigt werden. Bei der Implementierung der IValueConverter-Schnittstelle empfiehlt es sich, die Implementierung mit einem ValueConversionAttribute-Attribut zu versehen, um den Entwicklungstools die beteiligten Datentypen bei der Konvertierung anzuzeigen, 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 as string;
        DateTime resultDateTime;
        if (DateTime.TryParse(strValue, out resultDateTime))
        {
            return resultDateTime;
        }
        return DependencyProperty.UnsetValue;
    }
}
Public Class DateConverter
    Implements System.Windows.Data.IValueConverter

    Public Function Convert(ByVal value As Object,
                            ByVal targetType As System.Type,
                            ByVal parameter As Object,
                            ByVal culture As System.Globalization.CultureInfo) _
             As Object Implements System.Windows.Data.IValueConverter.Convert

        Dim DateValue As DateTime = CType(value, DateTime)
        Return DateValue.ToShortDateString

    End Function

    Public Function ConvertBack(ByVal value As Object,
                                ByVal targetType As System.Type,
                                ByVal parameter As Object,
                                ByVal culture As System.Globalization.CultureInfo) _
            As Object Implements System.Windows.Data.IValueConverter.ConvertBack

        Dim strValue As String = value
        Dim resultDateTime As DateTime
        If DateTime.TryParse(strValue, resultDateTime) Then
            Return resultDateTime
        End If
        Return DependencyProperty.UnsetValue

    End Function
End Class

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

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

Schließlich können Sie den Konverter in Ihrer Bindung mit der folgenden Syntax verwenden. Im folgenden Beispiel ist der Textinhalt von TextBlock an StartDategebunden, das eine Eigenschaft einer externen Datenquelle darstellt.

<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 obigen Beispiel verwiesen wird, sind in einem Ressourcenabschnitt definiert, der nicht in diesem Abschnitt gezeigt wird.

Siehe auch