Выбор строки DataGrid не работает, когда к ячейкам добавляется заполнение
Элемент управления DataGrid в WPF ведет себя странно. Когда я нажимаю на строку, она должна быть выбрана. При нажатии на границу ячейки или границу строки возникает проблема. Это просто ничего не делает. Как пользователь, я хочу щелкнуть строку и выбрать ее, не заставляя меня повторно щелкать, потому что я случайно нажал на границу между ячейками.
Можно ли как-то исправить это поведение, поэтому независимо от того, где я нажимаю, он выбирает строку?
[редактировать]
Я обнаружил, что это вопрос стиля, который я применил к DataGrid для свойства CellStyle:
<Style x:Key="CustomDataGridCellStyle" TargetType="DataGridCell">
<Setter Property="Padding" Value="2" />
<Setter Property="Margin" Value="0" />
<Setter Property="Background" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<Border x:Name="border"
BorderBrush="#CCaaccda"
BorderThickness="1"
CornerRadius="0"
Padding="4"
>
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="true">
<Setter TargetName="border" Property="Background" Value="#CC119EDA"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Если я уберу его, он работает. Я брожу, как стиль может связываться с взаимодействиями для контроля.
[редактировать]
Padding="4"
препятствует тому, чтобы созданная пустая область между ячейками не смогла пройти тест на попадание. Любая идея, как добавить не самый хитовый блокирующий отступ в ячейки?
[редактировать]
И решение очень странное.
<Grid Background="Transparent" IsHitTestVisible="True">
<ContentPresenter Margin="4"/>
</Grid>
Маржа добавляется к содержимому ячейки и не реагирует на нажатие. Но я окружил его Grid, который имеет IsHitTestVisible = "True" и является прозрачным. WPF сумасшедший странно.