当我从this article运行以下 Northwind WPF Toolkit Datagrid 代码时,我得到了一个数据网格,但是没有滚动条,因此用户只能看到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;
}
}
}
答案 0 :(得分:91)
将DataGrid
放入Grid
,DockPanel
,ContentControl
或直接放在Window
中。垂直方向的StackPanel
将为其子项提供他们要求的任何垂直空间 - 即使这意味着它被渲染出视图。
答案 1 :(得分:45)
WPF4
<DataGrid AutoGenerateColumns="True" Grid.Column="0" Grid.Row="0"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
</DataGrid>
with:<ColumnDefinition Width="350" />
&amp; <RowDefinition Height="300" />
工作正常。
滚动条不显示<ColumnDefinition Width="Auto" />
&amp; <RowDefinition Height="300" />
。
也适用于:<ColumnDefinition Width="*" />
&amp; <RowDefinition Height="300" />
如果它嵌套在外部<Grid>
。
答案 2 :(得分:16)
如果设置为RowDefinition
的任何父容器"Auto"
高度也是滚动条的停止者
或者,您可以设置高度“*”
我的情况发生了什么。
答案 3 :(得分:8)
在MaxHeight
上添加VerticalScrollBarVisibility="Auto"
和DataGrid
解决了我的问题。
答案 4 :(得分:1)
为列和行添加定义高度和宽度的网格。然后添加ScrollViewer
并在其中添加dataGrid。
答案 5 :(得分:1)
就我而言,我必须设置MaxHeight
并将IsEnabled="False"
替换为IsReadOnly="True"
答案 6 :(得分:-1)
这对我有用。 关键是使用*作为行高。
<Grid x:Name="grid">
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition Height="*"/>
<RowDefinition Height="10"/>
</Grid.RowDefinitions>
<TabControl Grid.Row="1" x:Name="tabItem">
<TabItem x:Name="ta"
Header="List of all Clients">
<DataGrid Name="clientsgrid" AutoGenerateColumns="True" Margin="2"
></DataGrid>
</TabItem>
</TabControl>
</Grid>