Compartir a través de


Cómo: Convertir datos enlazados

Actualización: noviembre 2007

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.ToString();
        DateTime resultDateTime;
        if (DateTime.TryParse(strValue, out resultDateTime))
        {
            return resultDateTime;
        }
        return value;
    }
}

Una vez creado un convertidor, puede agregarlo como recurso en el archivo Lenguaje de marcado de aplicaciones extensible (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 la sección de recurso del ejemplo, no mostrada en este tema. Para ver el ejemplo de código completo del que se extrajeron los ejemplos de código anteriores, consulte Demo Data Binding.

Vea también

Tareas

Cómo: Implementar la validación de enlaces

Conceptos

Información general sobre el enlace de datos

Otros recursos

Ejemplos de enlace de datos

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