2009-03-23 15 views
47

Quando si esegue il Northwind WPF Toolkit Datagrid seguente codice da this article, ottengo un datagrid, ma ci sono barre di scorrimento e quindi l'utente solo può vedere parte del datagrid. Sto usando la versione più recente marzo 2009.come posso abilitare le barre di scorrimento sul Datagrid WPF?

Cosa devo specificare in modo che Wagr Datagrid abbia barre di scorrimento?

Ho provato a mettere il datagrid in un ScrollViewer ma questo non ha aiutato.

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; 
     } 
    } 
} 
+0

Possibile duplicato di [WPF Datagrid - Non mostra alcuna barra di scorrimento] (https://stackoverflow.com/questions/24015890/wpf-datagrid-not-showing-any-scrollbar) –

risposta

79

Mettere il DataGrid in un Grid, DockPanel, ContentControl o direttamente in Window. Uno StackPanel orientato verticalmente darà ai suoi figli tutto lo spazio verticale che chiedono, anche se questo significa che non è visibile.

+1

Per aggiungere a questo, un 'HeaderedContentControl' è implementato internamente con uno 'StackPanel' che farà sì che' DataGrid' si comporti in modo incoerente con 'ContentControl'. – user7116

+2

Ho pensato che questo consiglio fosse spazzatura per ore, fino a quando ho finalmente individuato il tag StackPanel in agguato nella parte superiore del mio XAML. Grazie! – Ted

+1

Anche disporre di uno Stackpanel orientato verticalmente ostacola la virtualizzazione e influisce sulle prestazioni dell'applicazione. – kiran

35

WPF4

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

con: <ColumnDefinition Width="350" /> & <RowDefinition Height="300" /> funziona bene.

Le barre di scorrimento non vengono visualizzate con <ColumnDefinition Width="Auto" /> & <RowDefinition Height="300" />.

funziona anche bene con: <ColumnDefinition Width="*" /> & <RowDefinition Height="300" /> nel caso in cui questo è annidato all'interno di un esterno <Grid>.

+0

Il mio intellisense mi dice che non c'è * ScrollViewer * in * DataGrid * ... –

+1

@Konrad Viltersten 'ScrollViewer' è una proprietà associata. – xmedeko

+0

Grazie, aiuta !! – Sunny656

13

Se uno qualsiasi dei contenitori padre RowDefinition Altezza impostato su "Auto" tappi anche per le barre di scorrimento

In alternativa è possibile impostare Altezza "*"

che è successo nel mio caso.

5

Aggiunta di MaxHeight e VerticalScrollBarVisibility = "Auto" su DataGrid ha risolto il mio problema.

1

Aggiungere una griglia con altezza e larghezza definite per colonne e righe. Quindi aggiungi ScrollViewer e al suo interno aggiungi il dataGrid.

Problemi correlati