c# - IsHitTestVisible=false 正在禁用 DataGrid 的 ScrollBar
问题描述
我想禁止选择DataGrid
,所以我将属性设置IsHitTestVisible
为 false,但随后它也会禁用ScrollBar
.
如何通过仍然禁用选择来启用滚动条DataGrid
?
我可以做的一件事是:
我可以更改DataGrid
. 问题是当我说触发Property="DataGridRow.IsSelected"
它不起作用。另一方面,如果我说TriggerProperty="DataGridCell.IsSelected"
像这里所说的Row Selection in DataGrid,它只选择第一列而不是整行。此外,如果我说背景的值是透明的,它不会在单元格中显示文本。请帮忙。
<DataGrid x:Name="DGRunInfoItems" IsHitTesVisible="False" IsReadOnly="True" ColumnWidth="*" FontSize="{StaticResource BRControlNormalFontSize}" ScrollViewer.VerticalScrollBarVisibility="Auto" HeadersVisibility="None" CanUserAddRows="False" ItemsSource="{Binding RunViewModel.RunInfoDataTable}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Header}">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="DataGridCell.IsSelected" Value="True">
<Setter Property="Background" Value="Transparent"/>
</Trigger>
</Style.Triggers>
<Style.Setters>
<Setter Property="FontWeight" Value="Bold"/>
</Style.Setters>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Value}"/>
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="MinHeight" Value="28"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
解决方案
这终于奏效了。我通过删除 IsHitTestVisible 在样式的帮助下实现了它。如果它对这里的某人有帮助,那就是解决方案。我对整个 DataGrid 应用了一种样式。请参阅 DataGrid.CellStyle。(我从另一个 StackOverflow 帖子中获得了帮助,但找不到指向它的链接。)
<DataGrid x:Name="DGRunInfoItems" IsReadOnly="True" ColumnWidth="*" FontSize="{StaticResource BRControlNormalFontSize}" ScrollViewer.VerticalScrollBarVisibility="Auto" HeadersVisibility="None" CanUserAddRows="False" ItemsSource="{Binding RunViewModel.RunInfoDataTable}" AutoGenerateColumns="False">
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="DataGridCell.IsSelected" Value="True">
<Setter Property="BorderBrush">
<Setter.Value>
<SolidColorBrush Color="Transparent"/>
</Setter.Value>
</Setter>
<Setter Property="Foreground"
Value="{DynamicResource
{x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="Transparent"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Header}" FontWeight="Bold">
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Value}"></DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="MinHeight" Value="28"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
推荐阅读
- excel - . 发现 VBA 需要很长时间才能跨两个工作表执行
- c# - 无法将 COM 引用添加到 Blazor WebAssembly 项目
- python - 用于在保存在 vscode 时将 python 导入语句带到脚本顶部的配置命令
- html - 我的功能与不从输入字段复制数据相同
- javascript - 滚动时粘性徽标中途停止
- azure - 在 Azure Dev Ops 中运行管道之前强制用户在 UI 中输入变量
- r - 在带有 gamlss 包的 MuMIn 中使用疏通时出错
- javascript - 谷歌脚本:在一个单元格而不是一行中将文件夹路径写入谷歌表格并限制文件夹路径
- node.js - Prometheus 不会公开所有收集的指标
- c++ - ListView 的大小调整占用了整个空间,甚至是为状态栏提供的空间