2017-07-17 5 views
1

Ich möchte die datagrid scrollen, wenn es Länge der stackpanel überschreitet, so habe ich versucht, dies:Wie scrollt man das Datagrid im Stackpanel?

<StackPanel Orientation="Horizontal">       
    <ScrollViewer VerticalScrollBarVisibility="Auto" CanContentScroll="True"> 
     <DataGrid Name="dgConfig" VerticalAlignment="Stretch" AutoGenerateColumns="False"> 
      <DataGrid.Columns> 
       ... 
      </DataGrid.Columns> 
     </DataGrid> 
    </ScrollViewer>         
</StackPanel> 

Aber das funktioniert nicht, ich habe auf dieser Web durchsucht und konnten keine verfügbar, Lösungen zu finden. Wie soll ich das beheben? Vielen Dank!

+0

Verwenden Sie andere Panels wie Raster oder Dockpanel? –

+0

[So fügen Sie einem Stackpanel eine ScrollBar hinzu] (https://Stackoverflow.com/questions/6250240/how-to-add-a-crollbar-to-a-stackpanel) –

+0

Wie verhält sich Ihr Codebeispiel? Ist die StackPanel-Höhe erhöht, anstatt die Bildlaufleiste anzuzeigen? – opewix

Antwort

1

ScrollViewers und StackPanels funktionieren nicht sehr gut zusammen, da ein StackPanel misst seine Kindelemente mit unendlichen horizontalen Raum, wenn seine Orientation Eigenschaft auf Horizontal und unendlich vertikalen Raum gesetzt, wenn es auf Vertical gesetzt.

So werden Sie entweder eine Höhe angeben, für die StackPanel:

<StackPanel Orientation="Horizontal" Height="100"> 

Wenn Sie es nicht eine unendliche Höhe haben wird, und das ist, warum Sie keine Rollbalken zu sehen.

Die andere und viel bessere Option wäre, die StackPanel loszuwerden und eine andere Panel zu verwenden, die ihre Kindelemente mit einem unendlichen Raum nicht misst.

Die DataGrid hat eine eigene ScrollViewer eingebaut, so dass Sie es nicht selbst in ein ScrollViewer Element setzen müssen. Befreien Sie sich von der StackPanel (n) und der ScrollViewer:

<DataGrid Name="dgConfig" VerticalAlignment="Stretch" AutoGenerateColumns="False" 
          VerticalScrollBarVisibility="Auto"> 
    <DataGrid.Columns> 
     ... 
    </DataGrid.Columns> 
</DataGrid> 
+0

Das ist eine sehr hilfreiche Spezifikation. Danke – BarryLib

0

versuchen, VerticalScrollBarVisibility = "Auto", ScrollViewer.CanContentScroll = "True" zu DataGrid-Eigenschaft hinzuzufügen.

0

DockPanel statt Stackpanel für mich funktioniert.

Verwandte Themen