.NET Framework 애플리케이션의 데이터에 WPF 컨트롤 바인딩

참고 항목

데이터 집합 및 관련 클래스는 2000년대 초반에 적용된 레거시 .NET Framework 기술로, 응용 프로그램이 데이터베이스에서 연결이 끊어진 동안 응용 프로그램이 메모리의 데이터로 작업할 수 있도록 합니다. 사용자가 데이터를 수정하고 변경 내용을 다시 데이터베이스에 유지할 수 있도록 하는 애플리케이션에 특히 유용합니다. 데이터 세트는 매우 성공적인 기술로 입증되었지만 새 .NET 애플리케이션은 Entity Framework Core를 사용하는 것이 좋습니다. Entity Framework는 표 형식 데이터를 개체 모델로 사용하는 더 자연스러운 방법을 제공하며 더 단순한 프로그래밍 인터페이스를 제공합니다.

데이터를 WPF 컨트롤에 바인딩하여 애플리케이션 사용자에게 데이터를 표시할 수 있습니다. 이러한 데이터 바인딩 컨트롤을 만들려면 Visual Studio의 데이터 원본 창에서 WPF 디자이너로 항목을 끌어오면 됩니다. 이 항목에서는 데이터 바인딩된 WPF 애플리케이션을 만드는 데 사용할 수 있는 가장 일반적인 몇 가지 작업, 도구 및 클래스에 대해 설명합니다.

Visual Studio에서 데이터 바인딩 컨트롤을 만드는 방법에 관한 일반적인 내용은 Visual Studio에서 데이터에 컨트롤 바인딩을 참조하세요. WPF 데이터 바인딩에 대한 자세한 내용은 데이터 바인딩 개요를 참조하세요.

WPF 컨트롤을 데이터에 바인딩하는 것과 관련된 작업

다음 표에서는 데이터 원본 창에서 WPF 디자이너로 항목을 끌어서 수행할 수 있는 작업을 보여 줍니다.

작업 자세한 정보
새 데이터 바인딩된 컨트롤을 만듭니다.

기존 컨트롤을 데이터에 바인딩합니다.
데이터 세트로 WPF 컨트롤 바인딩
부모-자식 관계로 관련 데이터를 표시하는 컨트롤을 만듭니다. 그러면 사용자가 어느 한 컨트롤에서 부모 데이터 레코드를 선택하면 선택한 부모 레코드의 관련 자식 데이터가 다른 한 컨트롤에 표시됩니다. WPF 애플리케이션에서 관련 데이터 표시
한 테이블의 정보를 다른 테이블의 외래 키 필드 값을 기반으로 표시하는 조회 테이블을 만듭니다. WPF 애플리케이션에서 조회 테이블 만들기
데이터베이스의 이미지에 컨트롤을 바인딩합니다. 데이터베이스의 그림에 컨트롤 바인딩

유효한 놓기 대상

데이터 원본 창의 항목은 WPF 디자이너의 유효한 놓기 대상으로만 끌어올 수 있습니다. 유효한 놓기 대상에는 크게 두 가지 종류 즉, 컨테이너와 컨트롤이 있습니다. 컨테이너는 일반적으로 컨트롤을 포함하는 사용자 인터페이스 요소입니다. 예를 들어, 표는 컨테이너이므로 창입니다.

생성된 XAML 및 코드

데이터 원본 창에서 WPF 디자이너로 항목을 끌어오면 Visual Studio가 새 데이터 바인딩 컨트롤을 정의하거나 기존 컨트롤을 데이터 원본에 바인딩하는 XAML을 생성합니다. 일부 데이터 소스의 경우 Visual Studio는 데이터 소스를 데이터로 채우는 코드 숨김 파일의 코드도 생성합니다.

다음 표에는 Visual Studio가 데이터 원본 창에 있는 데이터 원본의 각 형식에 대해 생성하는 코드와 XAML이 나와 있습니다.

데이터 원본 데이터 소스에 컨트롤을 바인딩하는 XAML을 생성합니다. 데이터 소스를 데이터로 채우는 코드를 생성합니다.
데이터 세트
엔터티 데이터 모델
서비스 아니요
Object 아니요

데이터 집합

데이터 원본 창에서 디자이너로 테이블이나 열을 끌어오면 Visual Studio는 다음을 수행하는 XAML을 생성합니다.

  • 항목을 끌어 온 컨테이너의 리소스에 데이터 세트과 새 CollectionViewSource를 추가합니다. CollectionViewSource는 데이터 세트에 있는 데이터를 탐색하고 표시하는 데 사용할 수 있는 개체입니다.

  • 컨트롤에 대한 데이터 바인딩을 만듭니다. 디자이너의 기존 컨트롤로 항목을 끌면 XAML이 컨트롤을 항목에 바인딩합니다. 항목을 컨테이너로 끌면 XAML은 끌어온 항목에 대해 선택된 컨트롤을 만들고 컨트롤을 항목에 바인딩합니다. 이 컨트롤은 새로운 Grid 내에 만들어집니다.

또한 Visual Studio에서는 코드 숨김 파일에 대해 다음과 같은 변경 작업도 수행합니다.

  • 이 컨트롤이 들어 있는 UI 요소에 대한 Loaded 이벤트 처리기를 만듭니다. 이 이벤트 처리기는 테이블을 데이터로 채우고 컨테이너의 리소스에서 CollectionViewSource를 검색한 다음 첫 번째 데이터 항목을 현재 항목으로 설정합니다. Loaded 이벤트 처리기가 이미 있으면 Visual Studio는 기존 이벤트 처리기에 이 코드를 추가합니다.

엔터티 데이터 모델

데이터 원본 창에서 디자이너로 엔터티나 엔터티 속성을 끌어오면 Visual Studio는 다음을 수행하는 XAML을 생성합니다.

  • 항목을 끌어 온 컨테이너의 리소스에 새 CollectionViewSource를 추가합니다. CollectionViewSource는 엔터티에 있는 데이터를 탐색하고 표시하는 데 사용할 수 있는 개체입니다.

  • 컨트롤에 대한 데이터 바인딩을 만듭니다. 디자이너의 기존 컨트롤로 항목을 끌면 XAML이 컨트롤을 항목에 바인딩합니다. 항목을 컨테이너로 끌면 XAML은 끌어온 항목에 대해 선택된 컨트롤을 만들고 컨트롤을 항목에 바인딩합니다. 이 컨트롤은 새로운 Grid 내에 만들어집니다.

또한 Visual Studio에서는 코드 숨김 파일에 대해 다음과 같은 변경 작업도 수행합니다.

  • 디자이너로 끌어 온 엔터티(또는 디자이너로 끌어 온 속성이 들어 있는 엔터티)에 대한 쿼리를 반환하는 새 메서드를 추가합니다. 새 메서드의 이름은 Get<EntityName>Query입니다. 여기서 \<EntityName>은 엔터티의 이름입니다.

  • 이 컨트롤이 들어 있는 UI 요소에 대한 Loaded 이벤트 처리기를 만듭니다. 이 이벤트 처리기는 Get<EntityName>Query 메서드를 호출하여 엔터티를 데이터로 채우고 컨테이너의 리소스에서 CollectionViewSource를 검색한 다음, 첫 번째 데이터 항목을 현재 항목으로 설정합니다. Loaded 이벤트 처리기가 이미 있으면 Visual Studio는 기존 이벤트 처리기에 이 코드를 추가합니다.

Services

데이터 원본 창에서 디자이너로 서비스 개체나 속성을 끌어오면 Visual Studio는 데이터 바인딩 컨트롤을 만들거나 기존 컨트롤을 개체나 속성에 바인딩하는 XAML을 생성합니다. 그러나 Visual Studio는 프록시 서비스 개체를 데이터로 채우는 코드를 생성하지 않기 때문에 이 코드를 직접 작성해야 합니다. 이 작업을 수행하는 방법을 보여 주는 예제는 WCF 데이터 서비스에 WPF 컨트롤 바인딩을 참조하세요.

Visual Studio에서는 다음을 수행하는 XAML을 생성합니다.

  • 항목을 끌어 온 컨테이너의 리소스에 새 CollectionViewSource를 추가합니다. CollectionViewSource는 서비스에서 반환하는 개체에 있는 데이터를 탐색하고 표시하는 데 사용할 수 있는 개체입니다.

  • 컨트롤에 대한 데이터 바인딩을 만듭니다. 디자이너의 기존 컨트롤로 항목을 끌면 XAML이 컨트롤을 항목에 바인딩합니다. 항목을 컨테이너로 끌면 XAML은 끌어온 항목에 대해 선택된 컨트롤을 만들고 컨트롤을 항목에 바인딩합니다. 이 컨트롤은 새로운 Grid 내에 만들어집니다.

개체

데이터 원본 창에서 디자이너로 개체나 속성을 끌어오면 Visual Studio는 데이터 바인딩 컨트롤을 만들거나 기존 컨트롤을 개체나 속성에 바인딩하는 XAML을 생성합니다. 그러나 Visual Studio는 개체를 데이터로 채우는 코드를 생성하지 않기 때문에 이 코드를 직접 작성해야 합니다.

참고 항목

사용자 지정 클래스는 public이어야 하며 기본적으로 매개 변수 없이 생성자가 있어야 합니다. 해당 클래스는 구문에 “점”이 있는 중첩 클래스일 수 없습니다. 자세한 내용은 WPF에 대한 XAML 및 사용자 지정 클래스를 참조하세요.

Visual Studio에서는 다음을 수행하는 XAML을 생성합니다.

  • 항목을 끌어 온 컨테이너의 리소스에 새 CollectionViewSource를 추가합니다. CollectionViewSource는 개체에 있는 데이터를 탐색하고 표시하는 데 사용할 수 있는 개체입니다.

  • 컨트롤에 대한 데이터 바인딩을 만듭니다. 디자이너의 기존 컨트롤로 항목을 끌면 XAML이 컨트롤을 항목에 바인딩합니다. 항목을 컨테이너로 끌면 XAML은 끌어온 항목에 대해 선택된 컨트롤을 만들고 컨트롤을 항목에 바인딩합니다. 이 컨트롤은 새로운 Grid 내에 만들어집니다.

참고 항목