如何启用WPF Datagrid上的滚动条?

当我从本文运行以下Northwind WPF Toolkit Datagrid代码时,我得到一个数据网格,但没有滚动条 ,因此用户只能看到部分数据网格。 我正在使用2009年3月的最新版本。

我需要指定什么,以便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; } } } 

DataGrid放置在GridDockPanelContentControl或直接放在Window 。 一个垂直方向的StackPanel将给予它的孩子任何他们要求的垂直空间 – 即使这意味着它被渲染出视野。

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" />

在嵌套在外部<Grid>中的情况下,也可以很好地处理: <ColumnDefinition Width="*" /><RowDefinition Height="300" /> <Grid>

如果任何父容器RowDefinition Height设置为“Auto”,也是滚动条的停止符

或者,你可以设置高度“*”

发生在我的情况。

在DataGrid上添加MaxHeight和VerticalScrollBarVisibility =“Auto”解决了我的问题。

为列和行添加具有定义的高度和宽度的网格。 然后添加ScrollViewer,并在里面添加dataGrid。