Cómo: Convertir datos enlazados

En este ejemplo se muestra cómo aplicar la conversión a datos que se utilizan 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 fecha que convierte el valor de fecha pasado de manera que sólo muestre el año, el mes y el día. Al implementar la interfaz IValueConverter, es recomendable decorar la implementación con un atributo ValueConversionAttribute para indicar a las herramientas de programación los tipos de datos que participan 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;
    }
}

Una vez creado un convertidor, puede agregarlo como recurso en el archivo Extensible Application Markup Language (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 utilizar el convertidor en el enlace mediante la sintaxis siguiente. En el ejemplo siguiente, el contenido de texto de TextBlock se enlaza 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 recurso que no se muestra en este tema.

Vea también

Tareas

Cómo: Implementar la validación de enlaces

Conceptos

Información general sobre el enlace de datos

Otros recursos

Temas "Cómo..." sobre enlace de datos