데이터 바인딩 과정에서 데이터 타입과 UI 표시 형식이 일치하지 않을 때, 중간에서 데이터를 변환해주는 ValueConverter의 활용법을 정리했다.
ValueConverter: 데이터와 UI 간 변환 인터페이스
IValueConverter 인터페이스를 구현하면 서로 다른 타입의 데이터와 UI 속성을 연결할 수 있다.
bool 값을 WPF의 Visibility 타입으로 변환하는 컨버터의 예시는 다음과 같다.
public class BoolToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool isVisible = (bool)value;
return isVisible ? Visibility.Visible : Visibility.Collapsed;
}
// ConvertBack은 필요 시 구현한다.
}
XAML 적용 방식
작성한 컨버터는 리소스에 등록 후 바인딩 문구에 추가하여 적용한다.
<ProgressBar Visibility="{Binding IsLoading, Converter={StaticResource BoolToVis}}" />
ValueConverter 활용의 이점
-
뷰모델의 순수성 유지: 뷰모델이 UI 전용 타입인
Visibility나Brush등을 참조하지 않아도 된다.
뷰모델은 비즈니스 데이터만 관리한다. -
재사용성: 범용적으로 설계된 컨버터는 여러 프로젝트에서 재사용 가능하다.
- 선언적 UI 제어: 비하인드 코드 없이 XAML 상에서 논리적인 화면 제어가 가능하여 가독성이 향상된다.
유연한 설계 구조
ValueConverter는 MVVM 패턴의 구조적 완성도를 높이는 도구이다.
데이터와 UI 사이의 간극을 메워 코드를 깔끔하고 유연하게 관리할 수 있게 한다.
다양한 컨버터 활용을 통해 효율적인 UI 구조를 설계할 수 있는 것 같다.