2012-04-18 6 views
3

스타일링 중이며 기본 크기는 1440x900입니다. 앱이 그 크기보다 작 으면 위아래로 스크롤 할 수 있어야합니다.ScrollViewer의 RadGridView가 화면에서 벗어납니다.

나는 애플 리케이션의 주요 그리드 컨트롤 주위에 ScrollView 컨트롤을 래핑 해 보았는데, 작동하는 것처럼 보였다. 그러나 응용 프로그램에는 많은 페이지가 있으며 RadGridView 컨트롤이있는 페이지로 이동할 때마다 RadGridView의 열이 페이지 밖으로 확장됩니다.

기본적으로 RadGridView가 원하는만큼 커질 수 있기 때문에 ScrollView 컨트롤에 의해 발생하는 것으로 알고 있습니다.

RadGridView 컨트롤이 멈추지 않게하려면 어떤 방법이 있습니까?

답변

1

Telerik RadGridView 컨트롤을 사용하면 행 및 열 가상화가 가능하며 컨트롤에서 모눈의 각 셀에 사용되는 컨트롤을 재활용합니다. 이렇게하면 그리드의 메모리 사용량이 줄어들고 대용량 데이터를 사용하면 성능이 향상됩니다. 가상화가 활성화되어 있고 그리드에 포함 된 모든 데이터를 표시 할 수있는 그리드가 충분하지 않은 경우 그리드에 자체 스크롤 막대가 제공됩니다.

가상화를 사용하려면 RadGridView 컨트롤의 폭과 높이가 제한되어 있어야합니다. ScrollViewer 안에 RadGridView를 배치하면 무한한 너비와 높이가 생겨 가상화가 비활성화됩니다. 제 제안은 MaxWidthMaxHeight 속성을 사용하여 격자의 너비와 높이를 묶은 다음 래핑 한 ScrollViewer에서 눈금을 제거하는 것입니다. 행 및 열 가상화는 EnableRowVirtualizationEnableColumnVirtualization 속성을 사용하여 활성화됩니다. RadGridView 컨트롤,하지만이 두 가지 모두 기본적으로 True 기억하는 것.

면책 조항 : Telerik 컨트롤의 WPF 버전은 사용하지 않았으며 Silverlight 버전 만 사용했습니다. 둘 다 같은 코드베이스에서 왔으므로 그들의 행동이 유사해야합니다.

0

기본적으로 RadGridView 컨트롤은 내용을 표시 할 공간이 충분하지 않을 경우 기본적으로 행의 가로 및 세로 스크롤을위한 스크롤 막대를 자동으로 넣습니다. ScrollViewer를 사용하면 RadGridView가 자체 크기를 제한없이 결정할 수 있으므로 모든 열을 조정할 수있는 너비와 모든 행을 조정할 높이를 채울 것입니다.

RadGridView를 컨테이너로 제한하려면 전체보기를 차지할 것으로 예상되는 경우를 제외하고는 격자 셀에 배치해야합니다. RadGridView에 너비 또는 높이를 설정하지 않아야합니다. 기본값은 자동 (기본값)으로 설정하여 적절히 늘리거나 줄이기를 원하기 때문입니다. 다른 방법으로 생각할 수있는 것처럼 들리므로 몇 가지 코드를 게시하는 것이 좋습니다.

내 RadGridView는 여기에 있으며 원하는대로 컨테이너와 스크롤을 채 웁니다. 행 정의를 재정의하고 스크롤에 전혀 영향을 미치지 않아야하는 사용자 정의 usercontrol을 사용하고 있습니다.

<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> 
: 여기
<telerik:RadGridView ItemsSource="{Binding Shipments}" RowStyle="{StaticResource rowStyle}" 
          RowDetailsVisibilityMode="Collapsed" 
          RowIndicatorVisibility="Collapsed" 
          CanUserDeleteRows="False" 
          CanUserInsertRows="False" 
          CanUserSelect="False" telerik:StyleManager.Theme="Windows7" /> 

는 (내 로컬 ResourceDictionary의에서) 내 사용자 정의 rowtemplate입니다
관련 문제