WPF DataGrid에서 동적으로 열 추가

4088 단어 C#WPF
WPF DataGrid에서 런타임에 열 수와 이름이 결정되는 동적 데이터를 다루고 싶을 때 DataTable을 사용하면 실현할 수 있습니다.

만드는 것



데이터와 열을 추가할 수 있는 DataGrid를 만듭니다.
htps : // 기주 b. 코 m / 이시다 722 / 타타 b ぇ mp ぇ



View 만들기



먼저 DataGird를 배치하고 ItemsSource를 바인딩합니다. 이번에는 DataTableView라는 속성에 바인딩했습니다.

MainWindow.xaml
<DataGrid ItemsSource="{Binding DataTableView}" />

DataTable 만들기



ViewModel을 만듭니다. 우선 테이블 데이터를 보관 유지하는 DataTable 객체를 만듭니다. 이것은 직접 외부에 공개하지 않기 때문에 private 로 합니다.

DataTableViewModel.cs
private readonly DataTable dataTable = new DataTable();

이 dataTable 객체에 데이터를 추가합니다. 열을 추가하려면 다음을 수행합니다.

DataTableViewModel.cs
dataTable.Columns.Clear();
dataTable.Rows.Clear();
dataTable.Columns.Add("ID");
dataTable.Columns.Add("Name");

이제 ID와 Name이라는 열이 추가되었습니다. 그런 다음 데이터를 추가합니다.

DataTableViewModel.cs
var row = dataTable.NewRow();
row[0] = 0;
row[1] = "Jhon";
dataTable.Rows.Add(row);

ID가 0인 Jhon이라는 데이터를 추가할 수 있었습니다.

View에 알리기



작성한 DataTable을 DataGrid에 표시하려면 DataView를 사용합니다. 구체적으로는 다음과 같은 속성을 준비합니다.

DataTableViewModel.cs
public DataView DataTableView => new DataView(dataTable);

DataTableView는 View의 DataGrid에 바인딩됩니다. 이 속성을 읽을 때마다 dataTable에서 DataView를 만듭니다.

DataTable은 ObservableCollection이 아니므로 컬렉션 변경을 알리지 않습니다. 그래서 직접 수동으로 변경을 통보해야합니다.

DataTableViewModel.cs
private void NotifyTableUpdate()
{
    OnPropertyChanged(nameof(DataTableView));
}

테이블을 변경할 때마다 NotifyTableUpdate()를 실행해야 합니다.

좋은 웹페이지 즐겨찾기