我创建了一个数据网格并将其放置在 WPF 表单中的某个位置。
现在我要做的是让数据网格改变它的大小,使其保持与原始位置相同的比例,同时 WPF 窗口改变大小(希望这是有道理的)。
我尝试将 autostretch 设置为 true,但这并没有帮助。
在我的办公室里有我的电脑和 Visual Studio,所以无法测试它:) 但如果你将对齐设置为拉伸,这不应该工作吗?
datagridObj.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; datagridObj.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
当然这是有道理的,但听起来您并不真正了解 WPF 布局系统是如何工作的,除非您这样做,否则前进将非常痛苦。简而言之,您需要有一个合适的容器——我推荐使用 Grid——并将 DataGrid 放置在该容器中。然后,您可以为 DataGrid 设置边距等,以随心所欲地放置它,并且如果它的 Width 和 Height 设置为 Auto,它将与它的父容器保持一致。
现在,如果您在图片中还有其他几个控件,当然它会涉及更多,但我仍然建议保留网格并将它们分成您需要的任意多行和多列,然后分别为它们的高度/宽度设置适当的值 -您可以使某些列的宽度固定,或其他列的倍数,或者将它们保留为 Auto,它们将占用剩余的空间。
当然,该主题涉及更多,但您可以在 MSDN 上找到快速入门:http: //msdn.microsoft.com/en-us/library/ms745058.aspx
如果您只记得一件事,应该是这样的:网格表示 WPF 中的流体布局,尽可能多地使用它们而不是画布。当然 StackPanel 和 DockPanel 等都有自己的特定用途。
PS 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>
默认情况下 aDataGrid
是
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
所以你只需要像Arno Saxena告诉你的那样的保证金