17

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

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

panel6.Width
panel6.Height
panel6.Location

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

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

假设对于这个例子,我在 WPF 中使用停靠面板。

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

4

6 回答 6

32

设置宽度高度

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

至于位置,wpf使用Margin

dockpanel1.Margin = new Thickness(0,440,836,40);
于 2011-05-11T08:01:58.623 回答
15

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

在xml中:

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

在 C# 中:

Canvas.SetTop(YourElement, newX);
Canvas.SetLeft(YourElement, newY);
于 2013-12-16T21:42:41.023 回答
2

使用一些计算,例如(控件的先前位置 * 布局的新大小)/布局的先前大小 = 控件的新位置

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

于 2014-07-21T21:45:10.227 回答
1

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

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

于 2011-05-10T08:59:04.343 回答
0

您应该查看 wpf 中所有不同的布局面板(Grid、DockPanel、StackPanel、Canvas ...)

因此,如果您为您的面板设置任何属性,如果您的 LayoutPanel 更改,它的行为会有所不同。

于 2011-05-10T08:58:28.870 回答
0

如果您想明确定位您的子项目,请使用 Canvas 面板

<Canvas>
    <YourElement Canvas.Top="x" Canvas.Left="y"/>
</Canvas>
于 2011-06-10T19:25:12.140 回答