可以使用scrollviewer在minwidth和maxwidth之间水平拉伸其内容吗?

时间:2012-06-28 04:48:49

标签: c# wpf devexpress scrollviewer gridcontrol

我有一个包含devexpress GridControl的控件。我想设置一个ScrollViewer,这样当查看区域小于GridControl的最小宽度时,就会出现一个水平滚动条。然后,随着查看区域的大小调整,我希望滚动条在查看区域大于MinWidth时消失,GridControl随窗口延伸,直到达到MaxWidth为止GridControl停止增长的点。然后,这是看起来如此难以捉摸的部分,我希望能够再次缩小查看区域并与GridControl签订合同,直到达到'MinWidth`并再次出现滚动条。

到目前为止,我只能实现GridControl增长 - 当观看区域缩小时,立即显示滚动条,GridControl将永远不会变小。

有什么想法吗?

编辑:这似乎是DevExpress GridControl的问题。以下示例演示了RectangleDataGridGridControl的行为:

<UserControl xmlns:dxg="clr-namespace:DevExpress.Xpf.Grid;assembly=DevExpress.Xpf.Grid.v11.2"  x:Class="MyNamespace.ScrollViewerTest"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d">
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Rectangle Width="500" Height="200" Fill="AliceBlue" />
            <Rectangle Grid.Row="1" MinHeight="200" MaxHeight="400" MinWidth="500" MaxWidth="1000" Fill="Bisque" />
            <DataGrid Grid.Row="2" MinWidth="500" MaxWidth="10000" MinHeight="200" MaxHeight="400">                
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Column 1" Width="Auto"/>
                    <DataGridTextColumn Header="Column 2" Width="Auto"/>
                    <DataGridTextColumn Header="Column 3" Width="Auto"/>
                    <DataGridTextColumn Header="Column 4" Width="Auto"/>
                </DataGrid.Columns>
            </DataGrid>
            <dxg:GridControl Grid.Row="3" MinWidth="500" MinHeight="200" MaxWidth="1000" MaxHeight="400"/>
        </Grid>

    </ScrollViewer>        

</UserControl>

请注意GridControl如何从MaxWidth开始,而不会延伸到其他控件。此外,请注意,在调整窗口大小时,垂直调整大小会有效 - GridControl向上和向下调整大小(如果您的监视器较小,则可能需要调整MinHeight s)。其他控件在max和min之间正确调整大小。第一个矩形的宽度和高度都是固定的基础。

1 个答案:

答案 0 :(得分:2)

这似乎对我有用(我替换了ListBox而不是获取GridControl):

    <ScrollViewer HorizontalAlignment="Stretch" Name="scrollViewer1" VerticalAlignment="Stretch" Margin="8" HorizontalScrollBarVisibility="Auto">
        <ListBox Name="listBox1" MinWidth="400" MaxWidth="600" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
    </ScrollViewer>