Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf ScrollViewer中的RadGridView延伸出屏幕_Wpf_Xaml_Expression Blend_Scrollviewer_Radgridview - Fatal编程技术网

Wpf ScrollViewer中的RadGridView延伸出屏幕

Wpf ScrollViewer中的RadGridView延伸出屏幕,wpf,xaml,expression-blend,scrollviewer,radgridview,Wpf,Xaml,Expression Blend,Scrollviewer,Radgridview,我有一个我正在设计的应用程序,它的默认大小是1440x900。我希望用户能够上下滚动,如果应用程序的大小小于此 我尝试在应用程序的主网格控件周围包装一个ScrollView控件,它似乎可以工作。但是,该应用程序有许多页面,每当我导航到其中包含RadGridView控件的页面时,RadGridView的列都会在页面之外展开 我知道这是由ScrollView控件引起的,因为它基本上是让RadGridView增长到它想要的大小 有没有办法阻止RadGridView控件不停地拉伸?Telerik Rad

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

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

我知道这是由ScrollView控件引起的,因为它基本上是让RadGridView增长到它想要的大小


有没有办法阻止RadGridView控件不停地拉伸?

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

为了实现虚拟化,RadGridView控件需要具有有限的宽度和高度。将RadGridView放在ScrollViewer中会使其具有无限的宽度和高度,从而禁用虚拟化。我的建议是使用和属性绑定网格的宽度和高度,然后将网格从包装好的ScrollViewer中取出。行和列虚拟化是使用RadGridView控件的
EnableRowVirtualization
EnableColumnVirtualization
属性启用的,但我似乎记得默认情况下这两个属性都是
True


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

默认情况下,如果没有足够的空间显示内容,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" />

这是我的自定义行模板(在我的本地resourcedictionary中):


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