我想禁止选择DataGrid
,因此我将属性IsHitTestVisible
设置为false,但同时也禁用了ScrollBar
。
如何通过仍然禁用DataGrid
上的选择来启用滚动条?
我可以做的一件事是:
我可以在DataGrid
上更改选择颜色。问题是当我说触发器Property="DataGridRow.IsSelected"
无效时。另一方面,如果我像此处Row Selection in DataGrid那样说TriggerProperty="DataGridCell.IsSelected"
,它只会选择第一列而不是整个行。另外,如果我说“背景值”是透明的,则它不会在单元格中显示文本。请帮忙。
<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>
答案 0 :(得分:0)
这终于奏效了..我通过删除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>