如何在stackpanel中滚动数据网格?

时间:2017-07-17 02:43:12

标签: c# wpf scroll datagrid stackpanel

我想在datagrid长度超过stackpanel时滚动,所以我尝试了这个:

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

但是这不起作用,我在这个网站上搜索过但未能找到任何可用的解决方案。那我该怎么办呢?谢谢!

3 个答案:

答案 0 :(得分:3)

ScrollViewersStackPanels不能很好地协同工作,因为StackPanel如果Orientation属性设置为{{1},则会测量具有无限水平空间的子元素如果设置为Horizontal,则为无限垂直空间。

因此,您必须指定Vertical的高度:

StackPanel

如果不这样做,它将具有无限高度,这就是您看不到滚动条的原因。

另一个更好的选择是摆脱<StackPanel Orientation="Horizontal" Height="100"> 并使用另一个StackPanel来衡量其无限空间的子元素。

Panel内置了DataGrid,因此您无需亲自将其放入ScrollViewer元素中。摆脱ScrollViewer(s)和StackPanel

ScrollViewer

答案 1 :(得分:1)

DockPanel而不是StackPanel适合我。

答案 2 :(得分:0)

尝试将VerticalScrollBarVisibility =“Auto”,ScrollViewer.CanContentScroll =“True”添加到datagrid属性。