본문 바로가기
프로그래밍 속 지혜/WPF

WPF - ComboBox에 DataTable 바인딩(Binding)하기

by 생속지 2016. 4. 12.
반응형

WPF ComboBox에 DataTable을 바인딩(Binding)하는 방법입니다.


1. 우선 Window에 ComboBox를 배치합니다.


2. ComboBox의 변수 이름을 입력합니다.


3. ComboBox에 DataTable을 바인딩하기 위한 코드를 넣기 위한 Window의 Initialized Event를 생성합니다.


4. DataTable의 데이터가 잘 바인딩되었는지 확인하기 위한 ComboBox의 SelectionChanged Event를 생성합니다.


5. 아래와 같이 코딩을 하면, DataTable의 데이터가 ComboBox에 바인딩됩니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;

namespace ComboBoxBinding
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Initialized(object sender, EventArgs e)
        {
            // DataTable 생성(쿼리에 의해 생성된 DataTable도 동일)
            DataTable dataTable = new DataTable();

            // DataTable에 Column 추가
            dataTable.Columns.Add("VALUE", typeof(string));
            dataTable.Columns.Add("NAME", typeof(string));

            // DataTable에 데이터 추가
            dataTable.Rows.Add(new string[] { "KR", "Korea" });
            dataTable.Rows.Add(new string[] { "US", "America" });
            dataTable.Rows.Add(new string[] { "CH", "China" });
            dataTable.Rows.Add(new string[] { "JP", "Japan" });

            // Combo Box에 DataView 바인딩
            comboBox.ItemsSource = dataTable.DefaultView;
            // Combo Box에 표시될 Column 바인딩
            comboBox.DisplayMemberPath = "NAME";
            // Combo Box에 값(Value) Column 바인딩
            comboBox.SelectedValuePath = "VALUE";
        }

        private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // AddedItems에는 Combo Box에서 선택한 하나의 데이터만 존재한다.
            foreach (DataRowView row in e.AddedItems)
            {
                MessageBox.Show("Value : " + row["VALUE"] + "\n" + "Name : " + row["NAME"]);
            }
        }
    }
}


6. 실행된 결과 화면입니다.



아래의 동영상 참고하세요.



반응형

댓글