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;
}
}
}
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.
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.
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.
Ajout de MaxHeight
et VerticalScrollBarVisibility="Auto"
sur le DataGrid
a résolu mon problème.
Dans mon cas, j'ai dû définir MaxHeight
et remplacer IsEnabled="False"
par IsReadOnly="True"
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.