IsHitTestVisible = false отключает полосу прокрутки DataGrid - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу запретить выбор DataGrid, поэтому я устанавливаю для свойства IsHitTestVisible значение false, но затем он также отключает ScrollBar.

Как включить полосу прокрутки, отключив выделение на DataGrid?

Я могу сделать следующее:
Я могу изменить цвет выделения на DataGrid.Проблема в том, что когда я говорю Trigger Property="DataGridRow.IsSelected", это не сработает.С другой стороны, если я скажу TriggerProperty="DataGridCell.IsSelected", как здесь сказано Выбор строки в 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>

1 Ответ

0 голосов
/ 06 февраля 2019

Это то, что сработало, наконец ... Я добился этого с помощью стиля, удалив 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> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...