본문 바로가기
카테고리 없음

WPF Converter 간편 구현 팁 - MarkupExtension 활용

by jamesnet 2023. 5. 8.

안녕하세요. 개발자 이재웅입니다. 오늘은 WPF Converter를 구현할 때 MarkupExtension을 활용하여 더 간편하게 사용하는 방법에 대해 소개해드리려고 합니다.

 

이 방법을 사용하면 XAML에서 Converter를 적용할 때 따로 Resource Key를 만들지 않아도 되어서 코드를 더 깔끔하게 유지할 수 있습니다. 이번 예시에서는 BooleanToVisibilityConverter를 MarkupExtension과 함께 상속받아 작성해보겠습니다.

 

먼저, 다음과 같이 BooleanToVisibilityConverter 클래스를 작성합니다.

public class BooleanToVisibilityConverter : MarkupExtension, IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value.Equals(true) ? Visibility.Visible : Visibility.Collapsed;
    }

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

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return this;
    }
}
 

이제 XAML에서 다음과 같이 Converter를 적용해보세요.

<Border Visibility="{Binding IsVisible, FallbackValue=Collapsed, 
    Converter ={cnvts:BooleanToVisibilityConverter}}"/>
 

저도 최근에 이 방법을 알게 되어 사용해보고 있는데, 코드를 더 깔끔하게 작성할 수 있어서 좋았습니다. 혹시 문제되는 부분이 있거나 원래 사용하고 계신 분들의 의견도 듣고 싶습니다. 만약 이 방법에 문제가 있는 부분이 있다면 댓글로 알려주시면 감사하겠습니다.

 

이 주제는 제가 닷넷데브 에서도 한번 소개 드렸던 내용이기도 합니다.

관심있으신 분들은 아래 링크된 글도 함께 읽어 보시면 좋을 것 같습니다.

 

IValueConverter에 MarkupExtension 더하기

안녕하세요. 😄 WPF Converter 관련 간단한 팁입니다. MarkupExtension WPF Converter를 만들 때 IValueConverter와 이것을 함께 상속받아 만들게 되면 Xaml에서 Converter를 사용할 때 Resource Key를 따로 만들지 않아

forum.dotnetdev.kr

이상으로 WPF Converter 간편 구현 팁 - MarkupExtension 활용에 대한 포스트를 마치겠습니다. 읽어주셔서 감사합니다.


개발자 이재웅 [팔로우]

(따뜻한 인사 한마디가 저에게는 큰 힘이 됩니다!)

댓글