DataGrid instead of building a custom control of some kind that's just build on top of a Grid, because there's a lot of nice stuff that DataGrid supports, like sorting.Behavior<T> that gives me a HeadersSource property I can bind to, to define how many columns there are, and what their names are (parsed out of the CSV document).DataGrid.ItemsSource is bound to an array/list of the cell ViewModels, and each column needs to bind to the item at the appropriate index of the array. From there, the ContentPresenter should be able to retrieve the appropriate View for the ViewModel type from resources, and everything should be good. But I don't know how to do the programmatic equivalent of that CellTemplate