기본적인 DataGrid 사용 방법은 다음과 같습니다.
XAML
<DataGrid ItemsSource="{Binding MyData}" AutoGenerateColumns="False" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Col1" Binding="{Binding Col1}"/>
<DataGridTextColumn Header="Col2" Binding="{Binding Col2}"/>
</DataGrid.Columns>
</DataGrid>
ViewModel
public class ViewModel : BindingObject
{
private MyList mMyData = new MyList();
public MyList MyData { get => mMyData; set => OnPropertyChanged(ref mMyData, value); }
public ViewModel()
{
MyData.Add(new MyItem() { Col1 = "1", Col2 = "2" });
MyData.Add(new MyItem() { Col1 = "3", Col2 = "4" });
MyData.Add(new MyItem() { Col1 = "5", Col2 = "6" });
}
}
public class MyList : ObservableCollection<MyItem> { }
public class MyItem
{
public string Col1 { get; set; }
public string Col2 { get; set; }
}
질문은 다음과 같습니다.
- XAML에서 Column base가 아닌 Row base의 Data Binding을 할 수 있는 방법이 있을까요?
- 위 방법이 없다면 DataTable을 이용하는 방법이 있을 것 같은데, ViewModel level에서 DataTable이 아닌 다른 방식으로 값을 입력했을 때 Column 단위로 데이터가 입력되도록 하는 방법이 있을까요?
여러가지 방법이 있을 수 있다고 생각하지만 이러한 경우 어떤 방법들을 쓰시는지 궁금합니다.