2012-04-18 45 views
3

我有一個我正在設計的應用程序,它的默認大小是1440x900。我希望用戶能夠上下滾動,如果應用程序的大小小於此大小。ScrollViewer中的RadGridView延伸屏幕

我試圖纏繞在應用程序的主電網控制滾動型控件,它似乎工作。但是,該應用程序有許多頁面,每當我導航到其中包含RadGridView控件的頁面時,RadGridView的列就會從頁面上展開。

我知道這是由滾動型控制造成的,因爲它基本上是讓RadGridView增長,因爲它要大。

有什麼辦法可以阻止RadGridView控件從不停止拉伸?

回答

1

的Telerik的RadGridView控制允許的行和列的虛擬化,其中控制將回收用於網格的每個單元格的控件。這減少了網格的內存使用量,並且使其在大量數據的情況下表現更好。啓用虛擬化時,如果網格不足以顯示其包含的所有數據,網格將提供自己的滾動條。爲了啓用虛擬化,RadGridView控件需要具有有界的寬度和高度。將一個RadGridView放入一個ScrollViewer中會給它帶來無限的寬度和高度,從而禁用虛擬化。我的建議是綁定的網格的寬度和高度,使用MaxWidthMaxHeight屬性,然後把格掉你把它包在ScrollViewer中的。行和列的虛擬化使用的的EnableRowVirtualizationEnableColumnVirtualization的屬性已啓用RadGridView控件,但我似乎記得默認情況下這兩個都是True

聲明:我沒有用過Telerik控制,只有版本的Silverlight的WPF版本。兩者都來自相同的代碼庫,因此他們的行爲應該是相似的。

0

默認情況下,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>