IsHitTestVisible = false禁用了DataGrid的滚动条

时间:2019-02-05 23:56:14

标签: c# wpf xaml

我想禁止选择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>

1 个答案:

答案 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>