在WPF中,DataGrid控件的行为有些奇怪。当我单击一行时,它应该被选中。但是当我单击单元格边框或行边框时,会出现问题。它根本不做任何操作。作为用户,我希望单击行并选择它,而不是让我重新单击,因为我意外地单击了单元格之间的边框。
是否可能以某种方式修复这种行为,使得无论我在哪里单击都会选择行?
[编辑]
我发现这是我应用于DataGrid的CellStyle属性的样式问题。
如果我将它移除,它就可以正常工作。我想知道样式如何影响交互控制。
[编辑]
是否可能以某种方式修复这种行为,使得无论我在哪里单击都会选择行?
[编辑]
我发现这是我应用于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>
单元格内容添加了边距,但不响应点击。但我将其包围在具有IsHitTestVisible="True"和透明的网格中。WPF真是太奇怪了。