다음을 통해 공유


방법: 바인딩된 데이터 변환

업데이트: 2007년 11월

이 예제에서는 바인딩에 사용되는 데이터에 변환을 적용하는 방법을 보여 줍니다.

바인딩 중에 데이터를 변환하려면 ConvertConvertBack 메서드를 포함하는 IValueConverter 인터페이스를 구현하는 클래스를 만들어야 합니다.

예제

다음 예제에서는 년, 월, 일만 표시하도록 전달된 날짜 값을 변환하는 날짜 변환기의 구현을 보여 줍니다. IValueConverter 인터페이스를 구현할 때 다음 예제와 같이 변환에 관련된 데이터 형식을 개발 도구에 표시하는 ValueConversionAttribute 특성을 사용하여 구현을 데코레이팅하는 것이 좋습니다.

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

변환기를 작성했으면 XAML(Extensible Application Markup Language) 파일에 리소스로 추가할 수 있습니다. 다음 예제에서 srcDateConverter가 정의된 네임스페이스에 매핑됩니다.

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

마지막으로 다음 구문을 사용하여 바인딩에서 변환기를 사용할 수 있습니다. 다음 예제에서 TextBlock의 텍스트 콘텐츠는 외부 데이터 소스의 속성인 StartDate에 바인딩됩니다.

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

위의 예제에서 참조된 스타일 리소스는 이 항목에 표시되지 않은 샘플의 리소스 섹션에 정의되어 있습니다. 위의 코드 예제를 추출한 전체 코드 샘플을 보려면 데이터 바인딩 데모를 참조하십시오.

참고 항목

작업

방법: 바인딩 유효성 검사 구현

개념

데이터 바인딩 개요

기타 리소스

데이터 바인딩 샘플

데이터 바인딩 방법 항목