다음을 통해 공유


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

비고

클래스 및 관련 클래스는 DataSet 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 생성 데이터 원본을 데이터로 채우는 코드 생성
데이터 세트
엔터티 데이터 모델
서비스 아니오
객체 아니오

데이터세트

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

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

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

또한 Visual Studio는 코드 숨김 파일을 다음과 같이 변경합니다.

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

엔터티 데이터 모델

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

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

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

또한 Visual Studio는 코드 숨김 파일을 다음과 같이 변경합니다.

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

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

서비스

데이터 원본 창에서 디자이너로 서비스 개체 또는 속성을 끌면 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내부에 만들어집니다.

참고하십시오