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

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

问题描述:

我要滚动的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://*.com/questions/6250240/how-to-add-a-scrollbar-to-a-stackpanel) –

+0

你的代码示例的行为如何?是否增加了StackPanel高度而不是显示滚动条? – opewix

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

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

DockPanel中对我的作品。