在WPF中管理应用程序高度(以屏幕高度的百分比表示高度)

时间:2011-07-12 10:57:03

标签: c# .net wpf styles

所以我在我的显示器上创建了一个WPF应用程序,它具有更高的高度(1280对1024)分辨率。它在我的显示器上正常工作。

但是,当我将它带到不同分辨率的显示器时,整个应用程序都会扩展到显示器之外,因此无法使用。

知道如何纠正这个问题。我的控件和窗口高度的所有高度都是固定的

2 个答案:

答案 0 :(得分:1)

WPF并没有真正被设计为像WinForms一样对待,其中绝对控制宽度,高度和位置导致这些情况。它设计为流畅的,允许控件包装(请参阅WrapPanel),展开和折叠(请参阅自动或*尺寸)。如果你像WinForms一样对待它,你就会遇到这些问题,并且必须提出复杂的解决方法。 WPF被设计为这些复杂解决方案(以及其他)的永久解决方案

尝试寻找WPF的基础知识教程,以了解如何布局UI。

希望有所帮助。

答案 1 :(得分:1)

这很容易。降低窗户的高度。你为什么使用大的固定高度窗口?显然我不知道你的应用程序的设计,但正如你很快发现的那样,固定高度(和宽度)往往不能在不同的硬件上移植。

真正的解决方案可能是使用WPF Grid控件。所有控件都应该在网格中,这将填满整个窗口。根据您设置网格行和列的方式,您的控件将随着窗口大小的变化而缩放。

假设您想要在网格中均匀堆叠四个控件。你可以这样做:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height=".25*"/>
        <RowDefinition Height=".25*"/>
        <RowDefinition Height=".25*"/>
        <RowDefinition Height=".25*"/>
    </Grid.RowDefintions>
    <MyControl Grid.Row="0"/>
    <MyControl Grid.Row="1"/>
    <MyControl Grid.Row="2"/>
    <MyControl Grid.Row="3"/>
</Grid>

现在每个控件占用可用空间的25%,WPF会在窗口大小发生变化时处理所有内容。你可以做比这更复杂的布局,但希望这可以让你开始。