在窗口内自动延伸数据网格?

时间:2013-02-26 01:08:08

标签: c# wpf xaml datagrid

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

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

我已尝试将自动延伸设为真,但这并没有帮助。

3 个答案:

答案 0 :(得分:2)

我的办公室里有我的计算机和Visual Studio,所以无法测试它:)但是如果你将对齐设置为拉伸,这不应该工作吗?

datagridObj.Horizo​​ntalAlignment = System.Windows.Horizo​​ntalAlignment.Stretch; datagridObj.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;

答案 1 :(得分:2)

当然这是有道理的,但听起来你并不真正了解WPF布局系统是如何工作的,除非你这样做,否则将会非常痛苦。简而言之,你需要有一个合适的容器 - 我推荐Grid - 并将你的DataGrid放在那个容器中。然后你可以为DataGrid设置边距等,然后根据你的喜好放置它,如果它的宽度和高度设置为自动,它将与其父容器保持一致。

现在如果你在图片中有其他几个控件,当然它有点涉及,但我仍然建议保持网格并将它们分成你需要的许多行和列,然后为它们的高度设置适当的值/宽度 - 您可以将某些列固定为宽度或其他列的倍数,或将它们保留为自动,它们将占用剩余的空间。

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

如果你只记得一件事,它应该是这样的:网格代表WPF中的流畅布局,尽可能多地使用它们而不是画布。当然StackPanel和DockPanel等都有自己的特定用途。

P.S。视觉工作室设计师通常会做一些乱七八糟的事情,通过设置边距等使拖放变得更加直观,你应该密切关注它修改的属性,看看你是不是更好地手动定位东西一旦勾勒出布局,通过修改XAML(通常是这样)。

答案 2 :(得分:0)

就像例子一样

<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 告诉你的保证金