今日、DataGridColumn のヘッダーを ViewModel にバインドすることに関する奇妙な動作に気付きました。
次のバインディングは完全に機能します (DataGrid の名前は MyGrid です)。
<DataGridTextColumn Binding="{Binding Name}" Width="*" CanUserReorder="False" CanUserResize="False" IsReadOnly="True">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding ElementName=MyGrid, Path=DataContext.MyDeviceViewModel.CategoryHeader}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
以下は機能しませんが (MyGrid が見つからないと文句を言います):
<DataGridTextColumn Binding="{Binding Name}" Width="*" CanUserReorder="False" CanUserResize="False" IsReadOnly="True">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding ElementName=MyGrid, Path=DataContext.MyDeviceViewModel.CategoryHeader}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
Template または UIElement で直接ビューモデルにバインドすることの違いは何ですか?