Gewusst wie: Konvertieren von gebundenen Daten
In diesem Beispiel wird gezeigt, wie Sie die Konvertierung auf Daten anwenden, die in Bindungen verwendet werden.
Um Daten während der Bindung zu konvertieren, müssen Sie eine Klasse erstellen, die die IValueConverter-Schnittstelle implementiert, die die Methoden Convert und ConvertBack enthält.
Beispiel
Im folgenden Beispiel wird die Implementierung eines Datumskonverters gezeigt, der den Datumswert konvertiert, der in den übergebenen Datumswert umgewandelt wird, sodass es nur das Jahr, den Monat und den Tag anzeigt. Bei der Implementierung der IValueConverter-Schnittstelle empfiehlt es sich, die Implementierung mit einem ValueConversionAttribute-Attribut zu versehen, um die in der Konvertierung beteiligten Datentypen anzugeben, 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 sie als Ressource in Der XAML-Datei (Extensible Application Markup Language) hinzufügen. Im folgenden Beispiel wird src dem Namespace zugeordnet, in dem DateConverter definiert ist.
<src:DateConverter x:Key="dateConverter"/>
Schließlich können Sie den Konverter in Ihrer Bindung mithilfe der folgenden Syntax verwenden. Im folgenden Beispiel ist der Textinhalt der TextBlock-Datei an StartDate gebunden, was eine Eigenschaft einer externen Datenquelle ist.
<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 im obigen Beispiel verwiesenen Formatvorlagenressourcen werden in einem Ressourcenabschnitt definiert, der in diesem Thema nicht angezeigt wird.
Weitere Informationen
.NET Desktop feedback
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für