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”面板