WPF中的DataGrid控件表现得很奇怪。当我点击一行时,应该选择它。 单击单元格边框或行边框时出现问题。它什么都不做。作为用户,我想点击行并选择它而不强迫我重新点击,因为我不小心点击了单元格之间的边界。
是否有可能以某种方式修复此行为,所以无论我在哪里点击它选择行?
[编辑]
我发现它应用于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 =&#34; True&#34;并且是透明的。 WPF很疯狂。
答案 0 :(得分:1)
因为你没有发布任何xaml,或者你的数据网格看起来如何。 很难指出这个问题。
但是,Hit测试失败导致可能。 鼠标命中测试通过表示它的彩色像素矩阵检测元素。
尝试通过将背景设置为“透明”来着色所有像素。透明不会影响行的外观,也不会影响Hit测试:
private ICommand _myCommand;
public ICommand MyCommand => _myCommand ?? (_myCommand = new RelayCommand(Execute));