Visual Studio에서 데이터에 WPF 컨트롤 바인딩Bind WPF controls to data in Visual Studio

데이터를 WPFWPF 컨트롤에 바인딩하여 애플리케이션 사용자에게 데이터를 표시할 수 있습니다.You can display data to users of your application by binding data to WPFWPF controls. 이러한 데이터 바인딩된 컨트롤을 만들려면 데이터 소스 창에서 Visual Studio의로 항목을 끌어 옵니다 WPF DesignerWPF Designer .To create these data-bound controls, you can drag items from the Data Sources window onto the WPF DesignerWPF Designer in Visual Studio. 이 항목에서는 데이터 바인딩된 WPFWPF 애플리케이션을 만드는 데 사용할 수 있는 가장 일반적인 몇 가지 작업, 도구 및 클래스에 대해 설명합니다.This topic describes some of the most common tasks, tools, and classes that you can use to create data-bound WPFWPF applications.

Visual Studio에서 데이터 바인딩된 컨트롤을 만드는 방법에 대 한 일반적인 내용은 Visual studio에서 데이터에 컨트롤 바인딩을 참조 하세요.For general information about how to create data-bound controls in Visual Studio, see Bind controls to data in Visual Studio. 데이터 바인딩에 대 한 자세한 내용은 WPFWPF 데이터 바인딩 개요를 참조 하세요.For more information about WPFWPF data binding, see Data Binding Overview.

WPF 컨트롤을 데이터에 바인딩하는 것과 관련된 작업Tasks involved in binding WPF controls to data

다음 표에서는 데이터 원본 창에서 WPF DesignerWPF Designer로 항목을 끌어서 수행할 수 있는 작업을 보여 줍니다.The following table lists the tasks that can be accomplished by dragging items from the Data Sources window to the WPF DesignerWPF Designer.

TaskTask 추가 정보More information
새 데이터 바인딩된 컨트롤을 만듭니다.Create new data-bound controls.

기존 컨트롤을 데이터에 바인딩합니다.Bind existing controls to data.
데이터 세트로 WPF 컨트롤 바인딩Bind WPF controls to a dataset
부모-자식 관계로 관련 데이터를 표시하는 컨트롤을 만듭니다. 그러면 사용자가 어느 한 컨트롤에서 부모 데이터 레코드를 선택하면 선택한 부모 레코드의 관련 자식 데이터가 다른 한 컨트롤에 표시됩니다.Create controls that display related data in a parent-child relationship: when the user selects a parent data record in one control, another control displays related child data for the selected record. WPF 애플리케이션에서 관련 데이터 표시Display related data in WPF applications
한 테이블의 정보를 다른 테이블의 외래 키 필드 값을 기반으로 표시하는 조회 테이블 을 만듭니다.Create a lookup table that displays information from one table based on the value of a foreign-key field in another table. WPF 애플리케이션에서 조회 테이블 만들기Create lookup tables in WPF applications
데이터베이스의 이미지에 컨트롤을 바인딩합니다.Bind a control to an image in a database. 데이터베이스의 그림에 컨트롤 바인딩Bind controls to pictures from a database

유효한 놓기 대상Valid drop targets

데이터 원본 창의 항목을 WPF DesignerWPF Designer의 유효한 놓기 대상으로 끌어 올 수 있습니다.You can drag items in the Data Sources window only to valid drop targets in the WPF DesignerWPF Designer. 유효한 놓기 대상에는 크게 두 가지 종류 즉, 컨테이너와 컨트롤이 있습니다.There are two main kinds of valid drop targets: containers and controls. 컨테이너는 일반적으로 컨트롤을 포함하는 사용자 인터페이스 요소입니다.A container is a user interface element that typically contains controls. 예를 들어, 표는 컨테이너이므로 창입니다.For example, a grid is a container, and so is a window.

생성된 XAML 및 코드Generated XAML and code

데이터 소스 창에서로 항목을 끌어 오면 WPF DesignerWPF Designer Visual Studio에서 XAMLXAML 새 데이터 바인딩된 컨트롤을 정의 하거나 기존 컨트롤을 데이터 소스에 바인딩하는을 생성 합니다.When you drag an item from the Data Sources window to the WPF DesignerWPF Designer, Visual Studio generates XAMLXAML that defines a new data-bound control (or binds an existing control to the data source). 일부 데이터 원본의 경우에는 데이터 소스를 데이터로 채우는 코드에 코드를 생성 하는 코드도 생성 됩니다.For some data sources, Visual Studio also generates code in the code-behind file that fills the data source with data.

다음 표에서는 XAMLXAML 데이터 소스 창에서 각 데이터 소스 형식에 대해 Visual Studio에서 생성 하는 및 코드를 보여 줍니다.The following table lists the XAMLXAML and code that Visual Studio generates for each type of data source in the Data Sources window.

데이터 원본Data source 데이터 소스에 컨트롤을 바인딩하는 XAML을 생성합니다.Generate XAML that binds a control to the data source 데이터 소스를 데이터로 채우는 코드를 생성합니다.Generate code that fills the data source with data
데이터 세트Dataset Yes Yes
엔터티 데이터 모델Entity Data Model Yes Yes
서비스Service Yes 아니요No
ObjectObject Yes 아니요No

데이터 세트Datasets

데이터 소스 창에서 디자이너로 테이블이 나 열을 끌어 오면 Visual Studio에서 XAMLXAML 다음을 수행 하는을 생성 합니다.When you drag a table or column from the Data Sources window to the designer, Visual Studio generates XAMLXAML that does the following:

  • 항목을 끌어 온 컨테이너의 리소스에 데이터 세트과 새 CollectionViewSource를 추가합니다.Adds the dataset and a new CollectionViewSource to the resources of the container you dragged the item to. CollectionViewSource는 데이터 세트에 있는 데이터를 탐색하고 표시하는 데 사용할 수 있는 개체입니다.The CollectionViewSource is an object that can be used to navigate and display the data in the dataset.

  • 컨트롤에 대한 데이터 바인딩을 만듭니다.Creates a data binding for a control. 디자이너의 기존 컨트롤로 항목을 끌면 XAML이 컨트롤을 항목에 바인딩합니다.If you drag the item to an existing control in the designer, the XAML binds the control to the item. 항목을 컨테이너로 끌어 오면 XAML은 끌어 온 항목에 대해 선택한 컨트롤을 만들고 컨트롤을 항목에 바인딩합니다.If you drag the item to a container, the XAML creates the control that was selected for the dragged item, and it binds the control to the item. 이 컨트롤은 새로운 Grid 내에 만들어집니다.The control is created inside a new Grid.

또한 Visual Studio에서는 코드 숨김 파일에 대해 다음과 같은 변경 작업도 수행합니다.Visual Studio also makes the following changes to the code-behind file:

  • 이 컨트롤이 들어 있는 Loaded 요소에 대한 UIUI 이벤트 처리기를 만듭니다.Creates a Loaded event handler for the UIUI element that contains the control. 이 이벤트 처리기는 테이블을 데이터로 채우고 컨테이너의 리소스에서 CollectionViewSource를 검색한 다음 첫 번째 데이터 항목을 현재 항목으로 설정합니다.The event handler fills the table with data, retrieves the CollectionViewSource from the container's resources, and then makes the first data item the current item. Loaded이벤트 처리기가 이미 있는 경우 Visual Studio는 기존 이벤트 처리기에이 코드를 추가 합니다.If a Loaded event handler already exists, Visual Studio adds this code to the existing event handler.

엔터티 데이터 모델Entity data models

데이터 소스 창에서 디자이너로 엔터티 또는 엔터티 속성을 끌어 오면 Visual Studio에서 XAMLXAML 다음을 수행 하는을 생성 합니다.When you drag an entity or an entity property from the Data Sources window to the designer, Visual Studio generates XAMLXAML that does the following:

  • 항목을 끌어 온 컨테이너의 리소스에 새 CollectionViewSource를 추가합니다.Adds a new CollectionViewSource to the resources of the container you dragged the item to. CollectionViewSource는 엔터티에 있는 데이터를 탐색하고 표시하는 데 사용할 수 있는 개체입니다.The CollectionViewSource is an object that can be used to navigate and display the data in the entity.

  • 컨트롤에 대한 데이터 바인딩을 만듭니다.Creates a data binding for a control. 디자이너의 기존 컨트롤로 항목을 끌면 XAMLXAML이 컨트롤을 항목에 바인딩합니다.If you drag the item to an existing control in the designer, the XAMLXAML binds the control to the item. 항목을 컨테이너로 끌어 오면는 XAMLXAML 끌어 온 항목에 대해 선택한 컨트롤을 만들고 컨트롤을 항목에 바인딩합니다.If you drag the item to a container, the XAMLXAML creates the control that was selected for the dragged item, and it binds the control to the item. 이 컨트롤은 새로운 Grid 내에 만들어집니다.The control is created inside a new Grid.

또한 Visual Studio에서는 코드 숨김 파일에 대해 다음과 같은 변경 작업도 수행합니다.Visual Studio also makes the following changes to the code-behind file:

  • 디자이너로 끌어 온 엔터티(또는 디자이너로 끌어 온 속성이 들어 있는 엔터티)에 대한 쿼리를 반환하는 새 메서드를 추가합니다.Adds a new method that returns a query for the entity that you dragged to the designer (or the entity that contains the property that you dragged to the designer). 새 메서드에는 이름이 있습니다 Get<EntityName>Query \<EntityName> . 여기서은 엔터티의 이름입니다.The new method has the name Get<EntityName>Query, where \<EntityName> is the name of the entity.

  • 이 컨트롤이 들어 있는 Loaded 요소에 대한 UIUI 이벤트 처리기를 만듭니다.Creates a Loaded event handler for the UIUI element that contains the control. 이벤트 처리기는 메서드를 호출 Get<EntityName>Query 하 여 엔터티를 데이터로 채우고 CollectionViewSource 컨테이너의 리소스에서를 검색 한 다음 첫 번째 데이터 항목을 현재 항목으로 만듭니다.The event handler calls the Get<EntityName>Query method to fill the entity with data, retrieves the CollectionViewSource from the container's resources, and then makes the first data item the current item. Loaded이벤트 처리기가 이미 있는 경우 Visual Studio는 기존 이벤트 처리기에이 코드를 추가 합니다.If a Loaded event handler already exists, Visual Studio adds this code to the existing event handler.

서비스Services

데이터 소스 창에서 디자이너로 서비스 개체 또는 속성을 끌어 오면 Visual Studio에서 XAMLXAML 데이터 바인딩된 컨트롤을 만들거나 기존 컨트롤을 개체나 속성에 바인딩하는을 생성 합니다.When you drag a service object or property from the Data Sources window to the designer, Visual Studio generates XAMLXAML that creates a data-bound control (or binds an existing control to the object or property). 그러나 Visual Studio는 프록시 서비스 개체를 데이터로 채우는 코드를 생성 하지 않습니다.However, Visual Studio does not generate code that fills the proxy service object with data. 이 코드를 직접 작성해야 합니다.You must write this code yourself. 이 작업을 수행 하는 방법을 보여 주는 예제는 WCF 데이터 서비스에 WPF 컨트롤 바인딩을 참조 하세요.For an example that demonstrates how to do this, see Bind WPF controls to a WCF data service.

Visual Studio에서는 다음을 수행하는 XAML을 생성합니다.Visual Studio generates XAML that does the following:

  • 항목을 끌어 온 컨테이너의 리소스에 새 CollectionViewSource를 추가합니다.Adds a new CollectionViewSource to the resources of the container that you dragged the item to. CollectionViewSource는 서비스에서 반환하는 개체에 있는 데이터를 탐색하고 표시하는 데 사용할 수 있는 개체입니다.The CollectionViewSource is an object that can be used to navigate and display the data in the object that is returned by the service.

  • 컨트롤에 대한 데이터 바인딩을 만듭니다.Creates a data binding for a control. 디자이너의 기존 컨트롤로 항목을 끌면 XAMLXAML이 컨트롤을 항목에 바인딩합니다.If you drag the item to an existing control in the designer, the XAMLXAML binds the control to the item. 항목을 컨테이너로 끌어 오면는 XAMLXAML 끌어 온 항목에 대해 선택한 컨트롤을 만들고 컨트롤을 항목에 바인딩합니다.If you drag the item to a container, the XAMLXAML creates the control that was selected for the dragged item, and it binds the control to the item. 이 컨트롤은 새로운 Grid 내에 만들어집니다.The control is created inside a new Grid.

개체Objects

데이터 소스 창에서 디자이너로 개체 또는 속성을 끌어 오면 Visual Studio에서 XAMLXAML 데이터 바인딩된 컨트롤을 만들거나 기존 컨트롤을 개체나 속성에 바인딩하는을 생성 합니다.When you drag an object or property from the Data Sources window to the designer, Visual Studio generates XAMLXAML that creates a data-bound control (or binds an existing control to the object or property). 그러나 Visual Studio에서는 데이터를 사용 하 여 개체를 채우는 코드를 생성 하지 않습니다.However, Visual Studio does not generate code to fill the object with data. 이 코드를 직접 작성해야 합니다.You must write this code yourself.

참고

사용자 지정 클래스는 public 이어야 하며 기본적으로 매개 변수가 없는 생성자가 있어야 합니다.Custom classes must be public and, by default, have a constructor without parameters. 구문에서 "점"을 포함 하는 중첩 된 클래스 일 수 없습니다.They can't be nested classes that have a "dot" in their syntax. 자세한 내용은 WPF에 대 한 XAML 및 사용자 지정 클래스를 참조 하세요.For more information, see XAML and custom classes for WPF.

Visual Studio에서 XAMLXAML 다음을 수행 하는을 생성 합니다.Visual Studio generates XAMLXAML that does the following:

  • 항목을 끌어 온 컨테이너의 리소스에 새 CollectionViewSource를 추가합니다.Adds a new CollectionViewSource to the resources of the container that you dragged the item to. CollectionViewSource는 개체에 있는 데이터를 탐색하고 표시하는 데 사용할 수 있는 개체입니다.The CollectionViewSource is an object that can be used to navigate and display the data in the object.

  • 컨트롤에 대한 데이터 바인딩을 만듭니다.Creates a data binding for a control. 디자이너의 기존 컨트롤로 항목을 끌면 XAML이 컨트롤을 항목에 바인딩합니다.If you drag the item to an existing control in the designer, the XAML binds the control to the item. 항목을 컨테이너로 끌어 오면 XAML은 끌어 온 항목에 대해 선택한 컨트롤을 만들고 컨트롤을 항목에 바인딩합니다.If you drag the item to a container, the XAML creates the control that was selected for the dragged item, and it binds the control to the item. 이 컨트롤은 새로운 Grid 내에 만들어집니다.The control is created inside a new Grid.

참고 항목See also