控件在最大化时不会调整大小,但在通过拖动调整大小时会执行调整 - wpf

时间:2017-11-15 13:45:16

标签: c# wpf resize maximize-window

问题是按照 WPF: when I maximize my window, controls do not resize没有答案。

我有一个WPF表单,其中包含一些与表单的至少两个边相关联的控件。我已经向sizechanged事件添加了代码,它将控件的大小调整为表单大小的比例。代码运行良好,并通过拖动控件调整大小来正确调整窗体大小。

当窗体最大化时,控件不会调整大小,垂直保存在窗口顶部和底部的控件上。

我在statechanged事件中添加了类似的代码,但这没有任何作用。我尝试了直线TextBox1.Width = 300;,但一旦最大化,这不会改变尺寸。

理想情况下我想要的是说 TextBox1.Width = Window.width/3; TextBox1.Margin = My_Margin;其中My_Margin将左边距设置为1/3 Window.Width。这样文本框就占据了窗口的中央三分之一。

编辑:我知道GRID方法是从项目开始的方式。我现在可以在c#中做一个解决方法而不必重写表单吗?

编辑:已经接受了最佳答案,虽然它没有回答实际问题,因为它看起来像我唯一的选择。 我知道有一种方法可以在窗体最大化后调整控件大小,我没有时间找到它并且没有出现好的建议。

1 个答案:

答案 0 :(得分:3)

使用网格,定义列(及其宽度)和行,并使用Grid.Row和Grid.Column属性放置文本框。同样在WPF网格中,*表示宽度和高度表示比例大小调整。 因此,例如,如果您有2列定义像这些

<Grid.ColumnDefinitions>
     <ColumnDefinition Width="1*"></ColumnDefinition>
     <ColumnDefinition Width="9*"></ColumnDefinition>
</Grid.ColumnDefinitions>

你要说wpf第一列占据总可用宽度的10%,而第二列占90%。