gpt4 book ai didi

c# - 将填充添加到单元格时,DataGrid 行选择不起作用

转载 作者:行者123 更新时间:2023-12-05 03:12:58 24 4
gpt4 key购买 nike

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"

防止单元格之间创建的空白区域无法进行 HitTest 。知道如何向单元格添加 not hittest 阻塞填充吗?


[编辑]

而且解决方案很奇怪。

<Grid Background="Transparent" IsHitTestVisible="True">
<ContentPresenter Margin="4"/>
</Grid>

边距被添加到单元格内容并且它对点击没有反应。但我用具有 IsHitTestVisible="True"且透明的 Grid 将其包围。 WPF 非常奇怪。

最佳答案

因为您没有发布任何 xaml 或数据网格外观的图片。很难确定问题所在。

但是,这可能是由 HitTest 失败引起的。鼠标 HitTest 通过代表元素的彩色像素矩阵检测元素。

尝试通过将背景设置为透明来为所有像素着色。透明不会影响您的行的外观并会为 HitTest 着色:

<DataGrid>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="Transparent" />
</Style>
</DataGrid.RowStyle>
</DataGrid>

关于c# - 将填充添加到单元格时,DataGrid 行选择不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31802471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com