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

时间:2011-05-10 08:51:18

标签: c# wpf controls wpf-controls dockpanel

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

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

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

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

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

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

任何想法?

6 个答案:

答案 0 :(得分:24)

设置宽度高度

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

就位置而言,wpf使用保证金

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

答案 1 :(得分:12)

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

在xaml:

<Canvas>
    <YourElement Canvas.Top="x" Canvas.Left="y"/>
</Canvas>

在C#中:

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

针对您的具体问题,建议您使用DockPanel并将控件放入其中。这是第一个结果:WPF Tutorial | Dock Panel

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

<Canvas>
    <YourElement Canvas.Top="x" Canvas.Left="y"/>
</Canvas>