【问题标题】:RadGridView in a ScrollViewer stretches off the screenScrollViewer 中的 RadGridView 超出屏幕
【发布时间】:2012-04-18 18:33:14
【问题描述】:

我有一个我正在设计样式的应用程序,它的默认大小是 1440x900。如果应用程序的大小调整为小于该值,我希望用户能够上下滚动。

我尝试在应用程序的主网格控件周围包裹一个 ScrollView 控件,它似乎可以工作。但是,该应用程序有很多页面,每当我导航到其中包含 RadGridView 控件的页面时,RadGridView 的列就会从页面扩展。

我知道这是由 ScrollView 控件引起的,因为它基本上是让 RadGridView 随心所欲地增长。

有什么方法可以阻止 RadGridView 控件不停地拉伸?

【问题讨论】:

    标签: wpf xaml expression-blend scrollviewer radgridview


    【解决方案1】:

    Telerik RadGridView 控件允许行和列虚拟化,其中该控件将回收用于网格的每个单元格的控件。这减少了网格的内存使用,并使其在处理大量数据时表现得更好。当启用虚拟化并且网格不够大而无法显示其包含的所有数据时,网格将提供自己的滚动条

    为了启用虚拟化,RadGridView 控件需要有限制的宽度和高度。将 RadGridView 放入 ScrollViewer 会使其具有无限的宽度和高度,从而禁用虚拟化。我的建议是使用MaxWidthMaxHeight 属性来限制网格的宽度和高度,然后将网格从您包裹的ScrollViewer 中取出。使用@987654325 启用行和列虚拟化@ 和EnableColumnVirtualization RadGridView 控件的属性,但我似乎记得这两个默认都是True

    免责声明:我没有使用过 Telerik 控件的 WPF 版本,只使用了 Silverlight 版本。两者都来自相同的代码库,因此它们的行为应该相似。

    【讨论】:

      【解决方案2】:

      默认情况下,如果没有足够的空间来显示内容,RadGridView 控件将自动放入滚动条,以便对其行进行水平和垂直滚动。没错,ScrollViewer 只是让 RadGridView 确定它自己的大小不受约束,因此它将填充宽度以容纳所有列,并填充高度以容纳所有行。

      希望 RadGridView 受其容器的约束,因此您需要将其放入网格单元格中(除非它应该占据整个视图)。您不应该在 RadGridView 上设置任何宽度或高度,因为您希望它们设置为自动(默认)以适当地增长或缩小。听起来可能有别的东西阻碍了这一点,所以我建议你发布一些代码。

      这是我的 RadGridView,它会填满容器并按照您的需要滚动。请注意,我已经覆盖了行定义并使用了自定义用户控件,这根本不会影响滚动。

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

      这是我自定义的行模板(在我的本地资源字典中):

      <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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-13
        • 2016-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多