默认情况下,如果没有足够的空间来显示内容,RadGridView 控件将自动放入滚动条,以便对其行进行水平和垂直滚动。没错,ScrollViewer 只是让 RadGridView 确定它自己的大小不受约束,因此它将填充宽度以容纳所有列,并填充高度以容纳所有行。
您希望RadGridView 受其容器的约束,因此您需要将其放入网格单元中(除非它应该占据整个视图)。您不应该在 RadGridView 上设置任何宽度或高度,因为您希望它们设置为自动(默认)以适当地增长或缩小。听起来可能有其他东西阻碍了这一点,所以我建议你发布一些代码。
这是我的 RadGridView,它会填满容器并像你想要的那样滚动。请注意,我已经覆盖了行定义并且正在使用自定义用户控件,它根本不应该影响滚动。
<telerik:RadGridView ItemsSource="{Binding Shipments}" RowStyle="{StaticResource rowStyle}"
RowDetailsVisibilityMode="Collapsed"
RowIndicatorVisibility="Collapsed"
CanUserDeleteRows="False"
CanUserInsertRows="False"
CanUserSelect="False" telerik:StyleManager.Theme="Windows7" />
这是我自定义的行模板(在我的本地资源字典中):
<ControlTemplate x:Key="MyCustomRowTemplate" TargetType="telerik:GridViewRow">
<Border x:Name="rowsContainer" BorderBrush="#FFA0AFC3" BorderThickness="0,0,0,1" >
<Grid Width="Auto" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<view:ActiveReleaseItemView DataContext="{Binding}" />
</Grid>
</Border>
</ControlTemplate>
<Style x:Key="rowStyle" TargetType="telerik:GridViewRow">
<Setter Property="Template" Value="{StaticResource MyCustomRowTemplate}" />
</Style>