Как можно включить полосы прокрутки в 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;
}
}
}
Ответы
Ответ 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"