반응형
DataGrid의 기본 예제이다.
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는 항목의 편집이 가능하므로 이미 추가한 행의 정보를 수정하는 등 다양한 기능을 구현할 수 있다.
반응형
'C# > WPF' 카테고리의 다른 글
[C#][WPF] mbtiles 파일을 적용한 GMap에 Map Bound 추가하기 (0) | 2022.05.11 |
---|---|
[C#][WPF] Canvas에 부채꼴(파이) 그리기 (2) | 2022.04.27 |
[C#][WPF] 오프라인에서 mbtiles 파일로 GMap 사용하기 (3) | 2021.12.07 |
댓글