Подтвердить что ты не робот

Как можно включить полосы прокрутки в WPF Datagrid?

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

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

Я попытался поместить 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;
        }
    }
}
4b9b3361

Ответ 1

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

Ответ 2

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>.

Ответ 3

Если какой-либо из родительских контейнеров RowDefinition Height имеет значение "Auto" также пробки для полос прокрутки

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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