我想添加一个简单的垂直滚动条但不知何故,下面的前两个选项不起作用,只有第三个工作。我想知道有什么不同。
option1 :(作为datagrid属性)
<StackPanel>
<Grid>
<DataGrid DataContext="{StaticResource Viewobj}" ScrollViewer.VerticalScrollBarVisibility="Visible" AutoGenerateColumns="True" HorizontalAlignment="Stretch" VerticalAlignment="Top" x:Name="dg" ItemsSource="{Binding myDatasource}" BorderThickness="2"/>
</Grid>
选项2:环绕网格
<StackPanel>
<ScrollViewer>
<Grid>
<DataGrid DataContext="{StaticResource Viewobj}" AutoGenerateColumns="True" HorizontalAlignment="Stretch" VerticalAlignment="Top" x:Name="dg" ItemsSource="{Binding myDatasource}" BorderThickness="2"/>
</Grid>
</ScrollViewer>
</StackPanel >
选项3:围绕stackpanel
<ScrollViewer>
<StackPanel>
<Grid>
<DataGrid DataContext="{StaticResource Viewobj}" ScrollViewer.VerticalScrollBarVisibility="Visible" AutoGenerateColumns="True" HorizontalAlignment="Stretch" VerticalAlignment="Top" x:Name="dg" ItemsSource="{Binding myDatasource}" BorderThickness="2"/>
</Grid>
</StackPanel >
</ScrollViewer>
当我将所有内容添加到一起时,您可以分别看到它从内部到外部的样子。(第三个工作的是外部的,最右边的)
答案 0 :(得分:1)
您需要提高Grid
个高度,或将StackPanel
更改为限制其子级大小的内容,例如DockPanel
或{{1 }}。
Grid
或者
<DataGrid x:Name="dg" Height="400" />
默认情况下,<Grid>
<DataGrid x:Name="dg" ... />
</Grid>
允许其子项占用所需的空间,从而允许Grid允许尽可能多的垂直空间并以全高渲染。通过给它StackPanel
,你可以限制它占用的空间,这将使它显示ScrollBar。
第二个代码块会出现同样的问题,但是如果可能的话,我建议不要将Height
包装在DataGrid
中,因为它会取消DataGrid虚拟化,这可能会导致加载时间过长和/或许多记录表现不佳。