2012-04-18 2 views
3

私はスタイリングしているアプリケーションを持っており、デフォルトのサイズは1440x900です。私は、アプリがそれより小さいサイズであれば、上下にスクロールできるようにしたい。ScrollViewerのRadGridViewが画面外に伸びる

私は、アプリケーションのメイングリッドコントロールの周りにScrollViewコントロールをラップしようとしましたが、動作するようでした。しかし、アプリケーションには多くのページがあり、RadGridViewコントロールがあるものに移動するたびに、RadGridViewの列がページ外に広がります。

これは、基本的にはRadGridViewを必要に応じて大きくすることができるため、ScrollViewコントロールが原因であることがわかりました。

RadGridViewコントロールを停止させないようにする方法はありますか?

答えて

1

Telerik RadGridViewコントロールでは、グリッドの各セルに使用されているコントロールをリサイクルする行と列の仮想化が可能です。これにより、グリッドのメモリ使用量が削減され、大量のデータを使用するとパフォーマンスが向上します。仮想化が有効になっていてグリッドに含まれているすべてのデータを表示するのに十分な大きさでない場合、グリッドは独自のスクロールバーを提供します

仮想化を有効にするには、RadGridViewコントロールの幅と高さが制限されている必要があります。 RadGridViewをScrollViewerに配置すると、幅と高さが無限になり、仮想化が無効になります。私の提案は、MaxWidthMaxHeightのプロパティを使ってグリッドの幅と高さを束縛し、それをラップしたScrollViewerからグリッドを取り除くことです。行と列の仮想化は、EnableRowVirtualizationEnableColumnVirtualization RadGridViewコントロールですが、私はこれらの両方がデフォルトでTrueであることを覚えているようです。

免責事項:TelerikコントロールのWPF版は使用していませんが、Silverlight版のみを使用しています。どちらも同じコードベースから来ているので、それらの動作は似ているはずです。

0

デフォルトでは、コンテンツを表示するのに十分なスペースがない場合、RadGridViewコントロールは自動的にスクロールバーを挿入して、その行を水平または垂直にスクロールします。 ScrollViewerは、RadGridViewがそれ自体のサイズを制約なしと判断できるようにするだけです。したがって、すべての列に対応する幅と、すべての行に対応する高さを設定します。

RadGridViewをコンテナで拘束したいので、ビュー全体を占めていない場合は、グリッドセルに配置します。 RadGridViewに「幅」または「高さ」を設定しないでください。これは、Auto(デフォルト)を適切に拡大または縮小したいからです。他のものがそのようになっているように聞こえるので、コードを投稿することをお勧めします。

ここに私のRadGridViewがあり、それはあなたが望むようにコンテナとスクロールをいっぱいにします。私は行の定義をオーバーライドしており、カスタムのusercontrolを使用していますが、スクロールには何も影響しません。ここで

<telerik:RadGridView ItemsSource="{Binding Shipments}" RowStyle="{StaticResource rowStyle}" 
          RowDetailsVisibilityMode="Collapsed" 
          RowIndicatorVisibility="Collapsed" 
          CanUserDeleteRows="False" 
          CanUserInsertRows="False" 
          CanUserSelect="False" telerik:StyleManager.Theme="Windows7" /> 

は(私の地元のResourceDictionaryで)私にカスタマイズ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> 
関連する問題