wpf データグリッドでは、データグリッドが列幅の合計よりも広い場合、末尾にスペースができます。デフォルトでは、この領域をクリックしても行は選択されず、選択行の強調表示もこの領域をカバーしません。
この領域からのクリックを適切な行の選択に登録し、選択行の強調表示をこの領域に拡張するにはどうすればよいですか。
この質問: WPF DataGrid の全行選択 は似ていますが、ダミーの列を追加したり、列の幅を * に設定したりすることはできません。
wpf データグリッドでは、データグリッドが列幅の合計よりも広い場合、末尾にスペースができます。デフォルトでは、この領域をクリックしても行は選択されず、選択行の強調表示もこの領域をカバーしません。
この領域からのクリックを適切な行の選択に登録し、選択行の強調表示をこの領域に拡張するにはどうすればよいですか。
この質問: WPF DataGrid の全行選択 は似ていますが、ダミーの列を追加したり、列の幅を * に設定したりすることはできません。
<DataGrid Name="dg">
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="MouseLeftButtonDown" Handler="DataGridRow_MouseLeftButtonDown" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource {x:Static SystemColors.HighlightBrushKey}}" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
このコードビハインドで
private void DataGridRow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
dg.SelectedIndex = (sender as DataGridRow).GetIndex();
}
動作するはずです。