DataGridは要素の宣言のところにアイテムソースを記述する。
ヘッダーをバインドしたい先がDataGridのアイテムソースの下にいない場合、DataContextからのパスを指定しないといけない。
しかし、なぜか普通にはDataContextまで辿れない。この議論は下記サイトにあるが、結論としてDataContextを参照する為のプロキシを用意してリソースディクショナリに入れておかないといけない。
https://stackoverflow.com/questions/7711275/bind-datagrid-column-visibility-mvvm
<Grid.Resources>
<FrameworkElement x:Key="proxyElement" />
</Grid.Resources>
<ContentControl Visibility="Collapsed" Content="{StaticResource proxyElement}" />
<DataGrid ItemsSource="{Binding DataList}" AutoGenerateColumns="False">
~ 省略 ~
<DataGrid.Columns>
<DataGridTemplateColumn Header="{Binding Path=DataContext.Data.Value, Source={StaticResource proxyElement}}">
~ 省略 ~
</DataGrid.Columns>
</DataGrid>