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

Edw*_*uay 59 wpf datagrid scroll

当我从本文运行以下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>
Run Code Online (Sandbox Code Playgroud)

后台代码:

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Ken*_*art 96

DataGridGrid,DockPanel,ContentControl在或者直接Window.垂直方向StackPanel将为其子项提供他们要求的任何垂直空间 - 即使这意味着它被渲染出视图.

  • 我认为这个建议是垃圾几个小时,直到我终于发现潜藏在我的XAML顶部的StackPanel标签.谢谢! (3认同)
  • 同时具有垂直方向的Stackpanel将阻碍虚拟化并影响应用程序性能。 (2认同)
  • 另外,如果将 DataGrid 放置在网格行中,请勿使用“自动”,因为这将允许数据网格展开到屏幕之外 - 没有滚动条。要显示滚动条,必须明确指定 DataGrid 的大小——如 * 或数字。 (2认同)

小智 48

WPF4

<DataGrid AutoGenerateColumns="True" Grid.Column="0" Grid.Row="0"
      ScrollViewer.CanContentScroll="True" 
      ScrollViewer.VerticalScrollBarVisibility="Auto"
      ScrollViewer.HorizontalScrollBarVisibility="Auto">
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

用:<ColumnDefinition Width="350" /><RowDefinition Height="300" />工作正常.

滚动条不显示<ColumnDefinition Width="Auto" />&<RowDefinition Height="300" />.

也可以正常工作:<ColumnDefinition Width="*" />&<RowDefinition Height="300" /> 在嵌套在外部的情况下<Grid>.

  • @Konrad Viltersten`ScrollViewer`是附属物. (2认同)

Jay*_*Jay 17

如果任何父容器RowDefinition Height设置为"Auto",则还会为滚动条停止

或者你可以设置高度"*"

这种情况发生在我的案子中


Ale*_*lbu 9

在DataGrid上添加MaxHeight和VerticalScrollBarVisibility ="Auto"解决了我的问题.

  • 是的,这是有效的。完美解决了我的问题。谢谢~ (2认同)
  • 以我拙见的最佳答案。 (2认同)