DataGrid - как сделать обе полосы прокрутки всегда видимыми? - PullRequest
0 голосов
/ 16 января 2012

У меня довольно большая DataGrid, которая не помещается в окно:

    <DataGrid Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="17" AutoGenerateColumns="True" Name="dataGrid1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding DataList}" IsReadOnly="True" SelectedItem="{Binding SelectedStrategy, Mode=TwoWay}" AutoGeneratingColumn="DG_AutoGeneratingColumn">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDoubleClick">
                <i:InvokeCommandAction Command="{Binding OpenStrategyViewCommand}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </DataGrid>

Проблема в следующем:

  • вертикальная прокрутка не существует
  • горизонтальная прокрутка находится внизу DataGrid, но не внизу Window

Поскольку вертикальная прокрутка отсутствует, невозможно прокрутить DataGrid до нижней части, где горизонтальная прокрутка.

В обоих измерениях (вертикальном и горизонтальном) сетка данных больше окна

Я хочу иметь две полосы прокрутки в DataGrid, но они должны быть всегда видны.Как это сделать?

Ответы [ 3 ]

2 голосов
/ 16 января 2012

Поскольку вертикальная прокрутка отсутствует, невозможно прокрутить DataGrid до нижней части, где находится горизонтальная прокрутка.

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

Для постоянного отображения полос прокрутки используйте следующие два атрибута:

<DataGrid
HorizontalScrollBarVisibility="Visible"
VerticalScrollBarVisibility="Visible" >
0 голосов
/ 16 января 2012

Добавить ScrollViewer вокруг вашей DataGrid. Помогает вам контролировать размер сетки данных, также как упоминалось другими авторами HorizontalScrollBarVisibility = "Visible" VerticalScrollBarVisibility = "Visible" управляет видимостью полос прокрутки.

<ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible">
    <DataGrid Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="17" AutoGenerateColumns="True" Name="dataGrid1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding DataList}" IsReadOnly="True" SelectedItem="{Binding SelectedStrategy, Mode=TwoWay}" AutoGeneratingColumn="DG_AutoGeneratingColumn">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDoubleClick">
                <i:InvokeCommandAction Command="{Binding OpenStrategyViewCommand}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </DataGrid>
</ScrollViewer>
0 голосов
/ 16 января 2012

Вы можете установить видимость обеих полос прокрутки с помощью Horizontal- и VerticalScrollBarVisibility в вашей DataGrid, но я думаю, что, возможно, вам следует поместить вашу сетку в ScrollViewer, как предложил Андерсон Холмстрем.

Класс MSDN DataGrid

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...