본문 바로가기
C#/WPF

[C#][WPF] DataGrid 예제

by 부먹짱 2021. 12. 7.
반응형

DataGrid의 기본 예제이다.

 

DataGrid.zip
0.05MB

 

xaml

먼저 윈도우 혹은 페이지에 DataGrid를 추가한다.

 

        <DataGrid x:Name="StudentList">
            <DataGrid.Columns>
                <DataGridTextColumn Header="이름" Binding="{Binding Path=name}" Width="130"/>
                <DataGridTextColumn Header="학번" Binding="{Binding Path=id}" Width="130"/>
                <DataGridTextColumn Header="학과" Binding="{Binding Path=major}" Width="180"/>
                <DataGridTextColumn Header="학년" Binding="{Binding Path=grade}" Width="100"/>
                <DataGridTextColumn Header="비고" Binding="{Binding Path=etc}" Width="*"/>
            </DataGrid.Columns>
        </DataGrid>

 

cs

바인딩할 데이터를 담은 클래스를 생성하여 원하는 값을 넣은 클래스 리스트를 DataGrid에 바인딩 한다.

 

    public class Data
    {
        public string name { get; set; }
        public string id { get; set; }
        public string major { get; set; }
        public int grade { get; set; }
        public string etc { get; set; }
    }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            List<Data> list = new List<Data>();
            list.Add(new Data { name = "이지원", id = "210651", major = "컴퓨터공학", grade = 1, etc = "" });
            list.Add(new Data { name = "김현호", id = "210184", major = "컴퓨터공학", grade = 1, etc = "" });
            list.Add(new Data { name = "강희진", id = "210017", major = "컴퓨터공학", grade = 1, etc = "" });
            list.Add(new Data { name = "박서준", id = "210439", major = "컴퓨터공학", grade = 1, etc = "" });
            list.Add(new Data { name = "강나연", id = "210005", major = "컴퓨터공학", grade = 1, etc = "" });
            StudentList.ItemsSource = list;
        }

 

  • 결과

 

그런데 결과가 조금 이상하다.

열이 중복되어 들어가고 아래에 추가하지 않은 빈 행이 하나 더 들어가 있다.

 

이는 DataGrid 속성에 아래의 코드를 추가하면 해결 가능하다.

 

  • 열이 중복됨 :  AutoGenerateColumns="False"
  • 빈 행이 추가됨 : CanUserAddRows="False"

 

<DataGrid x:Name="StudentList" AutoGenerateColumns="False" CanUserAddRows="False">

 

  • 최종 결과

 

Button과 TextBox를 사용하여 행을 추가하고

DataGrid는 항목의 편집이 가능하므로 이미 추가한 행의 정보를 수정하는 등 다양한 기능을 구현할 수 있다.

 

반응형

댓글