默認情況下,RadGridView控制會自動把滾動條在它的行的水平和垂直滾動,如果沒有足夠的空間來顯示內容。你是對的,ScrollViewer只是讓RadGridView確定它自己的尺寸是不受限制的,因此它將填充寬度以容納它的所有列,並且高度可以容納所有行。
你想要 RadGridView被它的容器所約束,所以你要把它放到一個網格單元中(除非它應該佔據整個視圖)。您不應該在RadGridView上設置任何寬度或高度,因爲您希望它們設置爲自動(默認值)以適當增大或縮小。這聽起來像別的東西可能會阻礙,所以我建議你發佈一些代碼。
這是我的RadGridView,它會像你想要的那樣填充容器和卷軸。請注意,我已經重寫了行定義,並使用了自定義的usercontrol,它根本不應該影響滾動。
<telerik:RadGridView ItemsSource="{Binding Shipments}" RowStyle="{StaticResource rowStyle}"
RowDetailsVisibilityMode="Collapsed"
RowIndicatorVisibility="Collapsed"
CanUserDeleteRows="False"
CanUserInsertRows="False"
CanUserSelect="False" telerik:StyleManager.Theme="Windows7" />
這是我的個性rowtemplate(在我的本地資源字典):
<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>