c#WPF如何以编程方式设置控件的位置,宽度和高度?

我正在做我的第一个WPF应用程序。 我有问题,当我的表格最大化或全屏时,我的控件不会resize,只是停留在同一位置。 只有表格最大化。

在winform中,我可以在.cs中进行调整,如下所示:

panel6.Width panel6.Height panel6.Location 

这将帮助我设置它,如果我的表格最大化。我通过使用一些算术,我得到屏幕的分辨率和一些计算,并获得值,并可以将其设置为宽度,高度和位置。 但这是在WINFORM中。

我将如何解决WPF中最大化和全屏的问题? 有没有办法通过.cs文件以编程方式完成? 或WPF是否有一个简单的内置控件来解决这个问题?

假设这个例子我在WPF中使用dockpanel。

如果窗口最大化但其他控件仍然存在则毫无意义。

有任何想法吗?

设置宽度高度

 dockpanel1.width = 230; dockpanel1.height = 230; 

至于位置, wpf使用保证金

 dockpanel1.Margin = new Thickness(0,440,836,40); 

可以以编程方式在Canvas上移动子元素。

在xaml中:

    

在C#中:

 Canvas.SetTop(YourElement, newX); Canvas.SetLeft(YourElement, newY); 

使用一些计算,例如(控制的先前位置*布局的新尺寸)/布局的先前尺寸=控制的新位置

但最简单的方法是使用XAML使用网格并在其中放置列和行并将列和行的大小设置为*因此,在布局大小更改时,您的控件将重新定位,以引用父级的大小更改,您的网格是它。 而且你甚至可以通过在列和行中设置控件的边距来实现自动resize的控件。 不要忘记设置为拉伸的水平和垂直对齐。

对于您的特定问题,建议您使用DockPanel并将控件放入其中。 这是第一个结果: WPF教程| docker面板

正如flq和blindmeis已经建议的那样,请研究布局面板。 这将使你的生活在WPF中变得更加简单。

你应该看看wpf中的所有不同的layoutpanel(Grid,DockPanel,StackPanel,Canvas ……)

因此,如果为Panel设置任何属性,则如果LayoutPanel更改,则其行为会有所不同。

如果要显式定位子项,请使用“canvas”面板