Nie zrobisz tego. "W jaki sposób zmusić DataGrid'a aby w tej pustej kolumnie wypełniał kolorem zaznaczony wiersz." - Nie ma możliwości zrobienia tego, ponieważ tam nie ma żadnych wierszy. To jest tło tylko i wyłącznie. Nie klikniesz w to.
Możesz wypełnić to tło w taki sposób:
<Grid Background="Red" >
<DataGrid ItemsSource="{Binding Path=Elements}" HorizontalAlignment="Left"/>
</Grid>
lub dodać pustą kolumnę i wtedy możesz nią sterować.
<DataGrid ItemsSource="{Binding Path=Elements}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=l1}" Header="Liczba 1"/>
<DataGridTextColumn Binding="{Binding Path=l2}" Header="Liczba 2"/>
<DataGridTextColumn Binding="{Binding Path=l3}" Header="Liczba 3"/>
<DataGridTextColumn Binding="{Binding Path=l4}" Header="Liczba 4"/>
<DataGridTemplateColumn Width="*">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Background" Value="Gray"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Możesz również użyć ScrollViewer
<ScrollViewer HorizontalScrollBarVisibility="Auto" CanContentScroll="True">
<DataGrid ItemsSource="{Binding Path=Elements}" AutoGenerateColumns="False" HorizontalAlignment="Left">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=l1}" Header="Liczba 1"/>
<DataGridTextColumn Binding="{Binding Path=l2}" Header="Liczba 2"/>
<DataGridTextColumn Binding="{Binding Path=l3}" Header="Liczba 3"/>
<DataGridTextColumn Binding="{Binding Path=l4}" Header="Liczba 4"/>
<DataGridTemplateColumn Width="*">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Background" Value="Gray"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>
jedyna opcja jaka przychodzi mi na myśl, to wykrywać, czy Scrollbar
pojawił się i analogicznie ukrywać lub pokazywać tą ostatnią kolumnę