2017-07-17 54 views
1

我要滾動的datagrid時,它的長度超過stackpanel,所以我想這:如何滾動stackpanel中的數據網格?

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

但是,這並不工作,我已經搜索這個網站上,並沒有發現任何繳費的解決方案。那麼我應該如何解決這個問題?謝謝!

+0

使用其他面板,如網格或dockpanel? –

+0

[如何將ScrollBar添加到Stackpanel](https://stackoverflow.com/questions/6250240/how-to-add-a-scrollbar-to-a-stackpanel) –

+0

你的代碼示例的行爲如何?是否增加了StackPanel高度而不是顯示滾動條? – opewix

回答

1

ScrollViewersStackPanels不工作很好地結合在一起,因爲如果要是將它設置爲VerticalOrientation屬性設置爲Horizontal和無限的垂直空間StackPanel措施,無限的水平空間的子元素。

所以,你將不得不指定一個高度爲StackPanel

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

如果不將有無限的高度,這就是爲什麼你看到沒有滾動條。

另一個,更好的選擇是擺脫StackPanel,並使用另一個Panel不測量其無限空間的子元素。

DataGrid有自己的ScrollViewer內置,所以你不需要自己把它放在ScrollViewer元素內。擺脫StackPanel(S)和ScrollViewer的:替代的StackPanel的

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

這是一個非常有用的規範。謝謝 – BarryLib

0

嘗試向datagrid屬性添加VerticalScrollBarVisibility =「Auto」,ScrollViewer.CanContentScroll =「True」。

0

DockPanel中對我的作品。