web-dev-qa-db-fra.com

comment puis-je activer les barres de défilement sur le WPF Datagrid?

Lorsque j'exécute le code suivant Northwind WPF Toolkit Datagrid de cet article , j'obtiens une grille de données, mais il y a pas de barres de défilement et donc l'utilisateur ne peut voir qu'une partie de la grille de données. J'utilise la dernière version de mars 2009.

Que dois-je spécifier pour que le WPF Datagrid ait des barres de défilement?

J'ai essayé de mettre la grille de données dans un ScrollViewer mais cela n'a pas aidé.

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>

code-behind:

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;
        }
    }
}
56
Edward Tanguay

Placez le DataGrid dans un Grid, DockPanel, ContentControl ou directement dans le Window. Un StackPanel orienté verticalement donnera à ses enfants l'espace vertical qu'ils demandent, même si cela signifie qu'il est rendu hors de vue.

94
Kent Boogaart

WPF4

<DataGrid AutoGenerateColumns="True" Grid.Column="0" Grid.Row="0"
      ScrollViewer.CanContentScroll="True" 
      ScrollViewer.VerticalScrollBarVisibility="Auto"
      ScrollViewer.HorizontalScrollBarVisibility="Auto">
</DataGrid>

avec: <ColumnDefinition Width="350" /> & <RowDefinition Height="300" /> fonctionne très bien.

Les barres de défilement ne s'affichent pas avec <ColumnDefinition Width="Auto" /> Et <RowDefinition Height="300" />.

Fonctionne également très bien avec: <ColumnDefinition Width="*" /> & <RowDefinition Height="300" /> Dans le cas où cela est imbriqué dans un <Grid> Externe.

47
Peter Darvas

Si l'un des conteneurs parents RowDefinition Hauteur définie sur "Auto" également des bouchons pour les barres de défilement

Vous pouvez également définir la hauteur "*"

Ce qui est arrivé dans mon cas.

17
Jay

Ajout de MaxHeight et VerticalScrollBarVisibility="Auto" sur le DataGrid a résolu mon problème.

9
Alex Albu

Dans mon cas, j'ai dû définir MaxHeight et remplacer IsEnabled="False" par IsReadOnly="True"

1
Lucas

Ajoutez une grille avec une hauteur et une largeur définies pour les colonnes et les lignes. Ensuite, ajoutez ScrollViewer et à l'intérieur, ajoutez le dataGrid.

1
Bianca