DataGrid - это ItemsControl, и для каждого отображаемого элемента его DataContext установлен на отображаемый элемент.Совершенно очевидно, что в DataGridXXXColumn вы можете иметь хорошую простую привязку, например,
<DataGridTextColumn Binding="{Binding Name}" Header="Name" />
Но, как вы указали, чтобы добраться до DataContext DataGrid, вам нужно использовать относительную привязку источника.Это может показаться большим количеством Xaml, но я хотел бы предположить, что это то, что вы должны делать.
Единственный способ облегчить Xaml - это сделать ссылку на каждый элемент в коллекциис моделью родительского представления, чтобы вы могли связываться напрямую следующим образом:
<DataGridTextColumn Binding="{Binding Parent.SomeProperty}" Header="???" />
Это решение, но, возможно, не разумное.