Share via


Como: Converter Dados Acoplados

Este exemplo mostra como aplicar a conversão para dados usados em vínculos.

Para converter dados durante a vinculação, você deve criar uma classe que implementa a interface IValueConverter, que inclui os métodos Convert e ConvertBack.

Exemplo

O exemplo a seguir mostra a implementação de um conversor de data que converte o valor passado de modo que ele mostre somente o ano, o mês, e o dia. Ao implementar a interface IValueConverter, é uma boa prática decorar a implementação com um atributo ValueConversionAttribute para indicar às ferramentas de desenvolvimento os tipos de dados envolvidos na conversão, como no exemplo a seguir:

[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;
    }
}

Depois de criar um conversor, você pode adicioná-lo como um recurso no seu arquivo Extensible Application Markup Language (XAML). No exemplo a seguir, src mapeia para o namespace no qual DateConverter é definido.

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

Finalmente, você pode usar o conversor no seu vínculo usando a sintaxe a seguir. No exemplo a seguir, o conteúdo de texto de TextBlock está vinculado a StartDate, que é uma propriedade de uma fonte de dados externa.

<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}"/>

Os recursos de estilo referenciados no exemplo acima são definidos na seção de recursos do exemplo que não é mostrada neste tópico. Para ver o código completo do exemplo de onde os trechos acima foram extraídos, consulte Demonstração de ligação de dados.

Consulte também

Tarefas

Como: Implement Binding Validation

Conceitos

Revisão de Associação de Dados

Outros recursos

Exemplos de ligação de dados

Data Binding How-to Topics