3

スタイリングしているアプリがあり、デフォルトのサイズは1440x900です。アプリのサイズがそれよりも小さい場合、ユーザーが上下にスクロールできるようにしたいと思います。

ScrollViewコントロールをアプリのメイングリッドコントロールにラップしてみましたが、機能しているようです。ただし、アプリには多くのページがあり、RadGridViewコントロールが含まれているページに移動すると、RadGridViewの列がページから大きく広がります。

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

RadGridViewコントロールがノンストップで伸びないようにする方法はありますか?

4

2 に答える 2

1

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

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

免責事項: Telerik コントロールの WPF 版は使用せず、Silverlight 版のみを使用しました。両方とも同じコードベースに由来するため、動作は似ているはずです。

于 2012-04-18T20:57:03.863 に答える
0

デフォルトでは、RadGridView コントロールは、コンテンツを表示するのに十分なスペースがない場合、行を水平および垂直にスクロールするためのスクロールバーを自動的に配置します。ScrollViewer は単に RadGridView に制約のない独自のサイズを決定させるため、すべての列に対応する幅とすべての行に対応する高さを埋めます。

RadGridViewをそのコンテナーによって制約する必要があるため、それをグリッド セルに配置する必要があります (ビュー全体を占めることになっている場合を除く)。適切に拡大または縮小するために Auto (デフォルト) に設定する必要があるため、RadGridView に Width または Height を設定しないでください。他の何かが邪魔をしているように聞こえるので、コードを投稿することをお勧めします。

これが私の RadGridView で、コンテナがいっぱいになり、必要に応じてスクロールします。行定義をオーバーライドし、スクロールにまったく影響を与えないカスタム ユーザー コントロールを使用していることに注意してください。

 <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>
于 2012-04-18T21:01:46.293 に答える