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

Controls do not resize when maximised but do when resized by dragging - wpf

问题是按照 WPF: when I maximize my window, controls do not resize 无人回答。

我有一个带有一些控件的 WPF 窗体,这些控件至少绑定到窗体的两个边缘。我已将代码添加到 sizechanged 事件,该事件将控件大小调整为表单大小的比率。该代码运行良好,当通过拖动控件正确调整窗体大小时。

当表单最大化时,控件不会调整大小,除了垂直连接到 window 顶部和底部的控件。

我已经在 statechanged 事件中添加了类似的代码,但这没有任何作用。我试过直接 TextBox1.Width = 300; 但这不会改变最大化后的大小。

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

中间的三分之一

编辑:我知道 GRID 方法是从项目一开始就采用的方法。有没有我可以在这个阶段用 c# 做的解决方法,而不必重新编写表单?

编辑:已接受最佳答案,尽管它没有回答实际问题,因为它看起来像是我唯一的选择。 我知道有一种方法可以在表单最大化后调整控件的大小,但我没有时间找到它,也没有提出好的建议。

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

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

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