일반적인 List<T>를 바인딩하면 데이터 추가 시 UI가 갱신되지 않는 문제가 발생한다.
이를 해결하기 위해 WPF에서는 데이터 변화를 감지하고 UI에 통지하는 ObservableCollection
실시간 동기화의 핵심인 이 컬렉션의 특성을 정리했다.
ObservableCollection: UI 동기화 리스트
ObservableCollection은 요소의 추가나 삭제 발생 시 UI에 갱신 신호를 전송한다.
수동으로 화면 갱신 코드를 작성할 필요가 없다.
public class MainViewModel : Notifier
{
// UI와 자동 동기화되는 리스트
public ObservableCollection<string> Items { get; } = new ObservableCollection<string>();
public ICommand AddCommand => new RelayCommand(() => {
Items.Add($"새 항목 {Items.Count + 1}"); // 추가 시 즉시 UI 반영
});
}
List와의 차이점 분석
ObservableCollection 사용이 권장되는 이유는 데이터와 UI 간의 통신 기능 때문이다.
-
List
: 데이터는 변경되나 UI는 이를 감지할 수 없다.
수동으로 바인딩을 갱신해야 하는 번거로움이 있다. -
ObservableCollection
: INotifyCollectionChanged인터페이스를 내장하여ListView나ListBox등의 컨트롤이 데이터 변화를 즉시 감지하고 업데이트를 수행한다.
실시간 데이터 관리의 핵심 요소
ObservableCollection은 WPF 개발에서 필수적인 요소이다.
동기화 로직을 프레임워크에 위임함으로써 개발자는 비즈니스 로직에 집중할 수 있다.
데이터와 화면이 유기적으로 연동되는 UI 구축을 위한 중요한 도구인 것 같다.