Windows Phone 72012. 2. 23. 10:31

ConverterParameter를 사용하면 Converter를 만드는일을 줄일수 있다.

만약 20120223 이라는 Date를

각각 텍스트블럭에 2012년 02월 23일 처럼 넣고 싶은데 한번에 넣을수도 있지만 년월일이 색상이나 크기가 다를때는

택스트 블럭을 각각 만들어 넣어야 한다.

그렇다면 이것을 각각 YearConverter,MonthConverter,DayConverter 이렇게 3개의 컨버터를 만들어서 해야 하는가?

물론 가능하지만 엄청 귀찮은 일이 될것이다.

그럴때 paramter를 쓰면 편하다.

object형이라서 아무거나 넣을수 있지만 string같은경우는 “” 이렇게 따옴표로 묶을수 있는데 따옴표는 쓰면 안된다.

꼭 ‘’ 로 묶자

<TextBlock TextWrapping="Wrap" Text="{Binding h_dpt_dt, Converter={StaticResource YearConverter},ConverterParameter='Year'}" Foreground="Black" HorizontalAlignment="Left" Margin="10,0,0,0" FontWeight="Bold" VerticalAlignment="Bottom"/>

 

이렇게 사용하면 된다.

 

Converter에서는

public class DateCropConverter :IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
                return string.Empty;

            if (parameter.Equals("Year"))
            {
                return (value as string).Substring(0, 4);
            }
            else if (parameter.Equals("Month"))
            {
                return (value as string).Substring(4, 2);
            }
            else
            {
                return (value as string).Substring(6, 2);
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

이렇게 parameter로 넘어오기때문에 컨버터를 굳이 3개 를 만들필요 없이 하나로 해결하였다.

Posted by 동동(이재동)