Cómo: Convertir datos enlazados
En este ejemplo se muestra cómo aplicar la conversión a los datos que se usan en enlaces.
Para convertir datos durante el enlace, debe crear una clase que implemente la interfaz IValueConverter, que incluye los métodos Convert y ConvertBack.
Ejemplo
En el ejemplo siguiente se muestra la implementación de un convertidor de fechas que convierte el valor de fecha pasado para que solo muestre el año, el mes y el día. Al implementar la interfaz IValueConverter, se recomienda decorar la implementación con un atributo ValueConversionAttribute para indicar a las herramientas de desarrollo los tipos de datos implicados en la conversión, como en el ejemplo siguiente:
[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
Una vez que haya creado un convertidor, puede agregarlo como un recurso en el archivo del lenguaje XAML. En el ejemplo siguiente, src se asigna al espacio de nombres en el que se define DateConverter.
<src:DateConverter x:Key="dateConverter"/>
Por último, puede usar el convertidor en el enlace mediante la sintaxis siguiente. En el ejemplo siguiente, el contenido de texto de TextBlock está enlazado a StartDate, que es una propiedad de un origen de datos externo.
<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}"/>
Los recursos de estilo a los que se hace referencia en el ejemplo anterior se definen en una sección de recursos que no se muestra en este tema.
Vea también
.NET Desktop feedback