Bar*_*Lib 4 c# wpf datagrid scroll 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>
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我在此网络上搜索并未能找到任何可用的解决方案。那么我应该如何解决这个问题?谢谢!
ScrollViewers并且StackPanels不能很好地协同工作,因为StackPanel如果 a 的Orientation属性设置为Horizontal,则使用无限水平空间测量其子元素,如果设置为则测量其具有无限垂直空间Vertical。
因此,您必须为 指定高度StackPanel:
<StackPanel Orientation="Horizontal" Height="100">
Run Code Online (Sandbox Code Playgroud)
如果不这样做,它将具有无限的高度,这就是您看不到滚动条的原因。
另一个更好的选择是摆脱StackPanel并使用另一个Panel不使用无限空间测量其子元素的方法。
该DataGrid有自己ScrollViewer内置的,所以你不必把它放在里面ScrollViewer元素自己。去掉StackPanel(s) 和ScrollViewer:
<DataGrid Name="dgConfig" VerticalAlignment="Stretch" AutoGenerateColumns="False"
VerticalScrollBarVisibility="Auto">
<DataGrid.Columns>
...
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)