在窗口内自动伸缩数据网格

本文关键字:数据 数据网 网格 窗口 | 更新日期: 2023-09-27 18:01:00

我创建了一个数据网格,并将其放置在WPF表单中的一个位置。

现在我要做的是让数据网格改变其大小,保持与原始位置相同的比例,同时改变WPF窗口的大小(希望这是有意义的(。

我试过将autostretch设置为true,但无济于事。

在窗口内自动伸缩数据网格

我的办公室里有一台带Visual Studio的电脑,所以无法测试它:(但如果将对齐设置为拉伸,这不应该工作吗?

datagridObj.HorizontalAlignment=System.Windows.HorizontalAlignment.Stretch;datagridObj.VerticalAlignment=System.Windows.VerticalAlignment.Stretch;

当然这是有道理的,但听起来你并不真正理解WPF布局系统是如何工作的,除非你理解,否则这将是非常痛苦的。简而言之,你需要有一个合适的容器——我推荐Grid——并将你的DataGrid放在那个容器中。然后,您可以为DataGrid设置边距等,使其按照自己的意愿放置,并且如果将其"宽度"answers"高度"设置为"自动",则它将与其父容器保持一致。

现在,如果你在图片中有其他几个控件,当然会涉及到更多,但我仍然建议你保留Grids,并将它们拆分为你需要的行和列,然后分别为它们的Height/Width设置适当的值-你可以使一些列的宽度固定,或者使其他列的倍数固定,或者将它们保留为"自动",它们将占用剩余的空间。

当然,这个主题涉及的内容要多得多,但您可以在MSDN上找到一个快速入门:http://msdn.microsoft.com/en-us/library/ms745058.aspx

如果你只记得一件事,那就是:网格表示WPF中的流体布局,尽可能多地使用它们,而不是画布。当然,StackPanel和DockPanel等都有自己的特殊用途。

附言:visual studio设计师通常会把事情搞得一团糟,通过设置边距等使拖放更直观,你应该密切关注它所修改的属性,看看你是否最好在绘制布局后通过修改XAML(你通常是这样(手动定位。

例如

<Window x:Class=""
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid Margin="162,57,141,54"/>
    </Grid>
</Window>

默认情况下,DataGrid

HorizontalAlignment="Stretch" 
VerticalAlignment="Stretch"

所以你只需要像Arno Saxena告诉你

那样的保证金