как включить полосы прокрутки в сетке данных WPF? - PullRequest
55 голосов
/ 23 марта 2009

Когда я запускаю следующий Northwind WPF Toolkit Datagrid код из этой статьи , я получаю сетку данных, но нет полос прокрутки и, следовательно, пользователь может видеть только часть таблицы данных. Я использую новейшую версию март 2009 года.

Что мне нужно указать, чтобы в WPF Datagrid были полосы прокрутки?

Я пытался поместить сетку данных в ScrollViewer, но это не помогло.

XAML:

<Window x:Class="TestDataGrid566.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
    Title="Window1" Height="600" Width="800">
    <StackPanel>
        <toolkit:DataGrid x:Name="TheDataGrid" AutoGenerateColumns="True"/>
    </StackPanel>
</Window>

код-за:

using System.Linq;
using System.Windows;
using TestDataGrid566.Model;

namespace TestDataGrid566
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            NorthwindDataContext db = new NorthwindDataContext();
            var customers = from c in db.Customers
                            select c;
            TheDataGrid.ItemsSource = customers;
        }
    }
}

Ответы [ 6 ]

91 голосов
/ 23 марта 2009

Поместите DataGrid в Grid, DockPanel, ContentControl или непосредственно в Window. Вертикально-ориентированный StackPanel предоставит своим детям любое вертикальное пространство, которое они просят, даже если это означает, что он отображается вне поля зрения.

45 голосов
/ 08 февраля 2011

WPF4

<DataGrid AutoGenerateColumns="True" Grid.Column="0" Grid.Row="0"
      ScrollViewer.CanContentScroll="True" 
      ScrollViewer.VerticalScrollBarVisibility="Auto"
      ScrollViewer.HorizontalScrollBarVisibility="Auto">
</DataGrid>

с: <ColumnDefinition Width="350" /> & <RowDefinition Height="300" /> работает нормально.

Полосы прокрутки не отображаются с <ColumnDefinition Width="Auto" /> & <RowDefinition Height="300" />.

Также отлично работает с: <ColumnDefinition Width="*" /> & <RowDefinition Height="300" /> в случае, когда это вложено во внешний <Grid>.

16 голосов
/ 25 мая 2015

Если любой из родительских контейнеров RowDefinition Высота установлена ​​на "Auto", также ограничители для полос прокрутки

В качестве альтернативы вы можете установить высоту "*"

Что произошло в моем случае.

9 голосов
/ 12 мая 2016

Добавление MaxHeight и VerticalScrollBarVisibility="Auto" на DataGrid решило мою проблему.

1 голос
/ 27 марта 2019

В моем случае мне пришлось установить MaxHeight и заменить IsEnabled="False" на IsReadOnly="True"

1 голос
/ 03 июня 2016

Добавить сетку с определенной высотой и шириной для столбцов и строк. Затем добавьте ScrollViewer и внутри него добавьте dataGrid.

...