System.Collections.ObjectModel.ObservableCollection<T> 클래스

비고

이 문서는 이 API에 대한 참조 설명서를 보충하는 추가 설명을 제공합니다.

클래스는 ObservableCollection<T> 항목이 추가 또는 제거되거나 전체 목록을 새로 고칠 때 알림을 제공하는 동적 데이터 컬렉션을 나타냅니다.

대부분의 경우 작업하는 데이터는 개체 컬렉션입니다. 예를 들어, 데이터 바인딩의 일반적인 시나리오로는 ItemsControl, ListBox, 또는 ListView와 같은 TreeView을 사용하여 레코드 컬렉션을 표시하는 것이 있습니다.

IEnumerable 인터페이스를 구현하는 컬렉션을 열거할 수 있습니다. 그러나 컬렉션에서 삽입 또는 삭제가 발생할 때마다 UI가 자동으로 업데이트되도록 동적 바인딩을 설정하려면 컬렉션이 INotifyCollectionChanged 인터페이스를 구현해야 합니다. 이 인터페이스는 기본 컬렉션이 CollectionChanged 변경될 때마다 발생해야 하는 이벤트인 이벤트를 노출합니다.

ObservableCollection<T> 클래스는 INotifyCollectionChanged 인터페이스를 구현하는 데이터 수집 형식입니다.

고유한 컬렉션을 구현하기 전에 ObservableCollection<T>을 사용하거나 List<T>, Collection<T>BindingList<T>와 같은 기존 컬렉션 클래스 중 하나를 사용하는 것이 좋습니다. 고급 시나리오가 있고 고유한 컬렉션을 구현하려는 경우 인덱스로 개별적으로 액세스할 수 있는 제네릭이 아닌 개체 컬렉션을 제공하는 컬렉션을 사용하는 IList것이 좋습니다. 구현은 IList 데이터 바인딩 엔진에서 최상의 성능을 제공합니다.

비고

바인딩 소스 개체에서 바인딩 대상으로 데이터 값 전송을 완전히 지원하려면 바인딩 가능한 속성을 지원하는 컬렉션의 각 개체가 인터페이스와 같은 INotifyPropertyChanged 적절한 속성 변경 알림 메커니즘을 구현해야 합니다.

자세한 내용은 데이터 바인딩 개요의 "컬렉션에 바인딩"을 참조하세요.

XAML 사용량에 대한 참고 사항

ObservableCollection<T> 은 버전 3.0 및 3.5의 WPF(Windows Presentation Foundation)에서 XAML 개체 요소로 사용할 수 있습니다. 그러나 사용량에는 상당한 제한이 있습니다.

  • ObservableCollection<T>는 루트 요소여야 합니다. 제네릭 x:TypeArguments의 제한된 형식을 지정하는 데 사용해야 하는 ObservableCollection<T> 속성이 루트 요소의 개체 요소에서만 지원되기 때문입니다.

  • 특성을 선언해야 합니다 x:Class (즉, 이 XAML 파일의 빌드 작업이 Page 이거나 XAML을 컴파일하는 다른 빌드 작업이어야 합니다).

  • ObservableCollection<T> 는 처음에 기본 XML 네임스페이스에 매핑되지 않은 네임스페이스 및 어셈블리에 있습니다. 네임스페이스 및 어셈블리에 대한 접두사를 매핑한 다음 개체 요소 태그 ObservableCollection<T>에서 해당 접두사를 사용해야 합니다.

애플리케이션에서 XAML의 기능을 사용하는 ObservableCollection<T> 보다 간단한 방법은 파생된 ObservableCollection<T>제네릭이 아닌 사용자 지정 컬렉션 클래스를 선언하고 특정 형식으로 제한하는 것입니다. 그런 다음, 이 클래스를 포함하는 어셈블리를 매핑하고 XAML에서 개체 요소로 참조합니다.