Visual Studio에서 데이터에 WPF 컨트롤 바인딩
데이터를 WPF 컨트롤에 바인딩하여 응용 프로그램 사용자에게 데이터를 표시할 수 있습니다. 이러한 데이터 바인딩된 컨트롤을 만들려면 데이터 소스 창에서 Visual Studio의 WPF Designer로 항목을 끌면 됩니다. 이 항목에서는 데이터 바인딩된 WPF 응용 프로그램을 만드는 데 사용할 수 있는 가장 일반적인 몇 가지 작업, 도구 및 클래스에 대해 설명합니다.
Visual Studio에서 데이터 바인딩된 컨트롤을 만드는 방법에 대한 자세한 내용은 Visual Studio에서 데이터에 컨트롤 바인딩을 참조하십시오. WPF 데이터 바인딩에 대한 일반적인 내용은 데이터 바인딩 개요를 참조하십시오.
WPF 컨트롤을 데이터에 바인딩하는 것과 관련된 작업
다음 표에서는 데이터 소스 창에서 WPF Designer로 항목을 끌어서 수행할 수 있는 작업을 보여 줍니다.
Task |
추가 정보 |
---|---|
새 데이터 바인딩된 컨트롤을 만듭니다. 기존 컨트롤을 데이터에 바인딩합니다. |
|
부모-자식 관계로 관련 데이터를 표시하는 컨트롤을 만듭니다. 그러면 사용자가 어느 한 컨트롤에서 부모 데이터 레코드를 선택하면 선택한 부모 레코드의 관련 자식 데이터가 다른 한 컨트롤에 표시됩니다. |
|
한 테이블의 정보를 다른 테이블의 외래 키 필드 값을 기반으로 표시하는 조회 테이블을 만듭니다. |
|
데이터베이스의 이미지에 컨트롤을 바인딩합니다. |
유효한 놓기 대상
데이터 소스 창의 항목을 WPF Designer의 유효한 놓기 대상으로 끌어 올 수 있습니다. 유효한 놓기 대상에는 크게 두 가지 종류 즉, 컨테이너와 컨트롤이 있습니다. 컨테이너는 일반적으로 컨트롤을 포함하는 사용자 인터페이스 요소입니다. 예를 들어, 표는 컨테이너이므로 창입니다.
생성된 XAML 및 코드
데이터 소스 창에서 WPF Designer로 항목을 끌면 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에서는 코드 숨김 파일에 대해 다음과 같은 변경 작업도 수행합니다.
디자이너로 끌어 온 엔터티(또는 디자이너로 끌어 온 속성이 들어 있는 엔터티)에 대한 쿼리를 반환하는 새 메서드를 추가합니다. 새 메서드의 이름은 GetEntityNameQuery입니다. 여기서 EntityName은 엔터티의 이름입니다.
이 컨트롤이 들어 있는 UI 요소에 대한 Loaded 이벤트 처리기를 만듭니다. 이 이벤트 처리기는 GetEntityNameQuery 메서드를 호출하여 엔터티를 데이터로 채우고 컨테이너의 리소스에서 CollectionViewSource를 검색한 다음 첫 번째 데이터 항목을 현재 항목으로 설정합니다. Loaded 이벤트 처리기가 이미 있으면 Visual Studio에서 기존 이벤트 처리기에 이 코드를 추가합니다.
서비스
데이터 소스 창에서 디자이너로 서비스 개체나 속성을 끌면 Visual Studio에서 데이터 바인딩된 컨트롤을 만들거나 기존 컨트롤을 개체나 속성에 바인딩하는 XAML을 생성합니다. 그러나 Visual Studio에서 프록시 서비스 개체를 데이터로 채우는 코드를 생성하지 않기 때문에 이 코드를 직접 작성해야 합니다. 이 작업을 수행하는 방법을 보여 주는 예제를 보려면 연습: WCF 데이터 서비스에 WPF 컨트롤 바인딩을 참조하십시오.
Visual Studio에서는 다음을 수행하는 XAML을 생성합니다.
항목을 끌어 온 컨테이너의 리소스에 새 CollectionViewSource를 추가합니다. CollectionViewSource는 서비스에서 반환하는 개체에 있는 데이터를 탐색하고 표시하는 데 사용할 수 있는 개체입니다.
컨트롤에 대한 데이터 바인딩을 만듭니다. 디자이너의 기존 컨트롤로 항목을 끌면 XAML이 컨트롤을 항목에 바인딩합니다. 컨테이너로 항목을 끌면 XAML이 끌어 온 항목에 대해 선택한 컨트롤을 만들고 컨트롤을 항목에 바인딩합니다. 이 컨트롤은 새로운 Grid 내에 만들어집니다.
개체
데이터 소스 창에서 디자이너로 개체나 속성을 끌면 Visual Studio에서 데이터 바인딩된 컨트롤을 만들거나 기존 컨트롤을 개체나 속성에 바인딩하는 XAML을 생성합니다. 그러나 Visual Studio에서 프록시 서비스 개체를 데이터로 채우는 코드를 생성하지 않기 때문에 이 코드를 직접 작성해야 합니다.
참고
사용자 지정 클래스가 공용 클래스여야 하고 매개 변수 없는 기본 생성자가 있어야 합니다. 이러한 클래스는 구문 내에 '점'이 있는 중첩 클래스일 수 없습니다. 자세한 내용은 WPF에 대한 XAML 및 사용자 지정 클래스를 참조하십시오.
Visual Studio에서는 다음을 수행하는 XAML을 생성합니다.
항목을 끌어 온 컨테이너의 리소스에 새 CollectionViewSource를 추가합니다. CollectionViewSource는 개체에 있는 데이터를 탐색하고 표시하는 데 사용할 수 있는 개체입니다.
컨트롤에 대한 데이터 바인딩을 만듭니다. 디자이너의 기존 컨트롤로 항목을 끌면 XAML이 컨트롤을 항목에 바인딩합니다. 컨테이너로 항목을 끌면 XAML이 끌어 온 항목에 대해 선택한 컨트롤을 만들고 컨트롤을 항목에 바인딩합니다. 이 컨트롤은 새로운 Grid 내에 만들어집니다.
참고 항목
작업
방법: Visual Studio에서 데이터에 WPF 컨트롤 바인딩