让全屏wpf应用程序在所有分辨率下看起来都一样

本文关键字:分辨率 看起来 都一样 wpf 应用程序 | 更新日期: 2023-09-27 18:28:42

我想制作一个全屏WPF应用程序,它在不同屏幕分辨率的所有机器上看起来都一样。我用800*480像素的资源创建了MainWindow.xaml。我在窗口顶部做了一个菜单,如下所示:

<Grid Height="480" Width="800">
    <Menu FontSize="25" Margin="0,0,0,442" >
        <MenuItem Header="File" />
    </Menu>
</Grid>

但当我在调试模式下启动应用程序时,菜单就在屏幕中央。我想是因为我的屏幕分辨率是1366*768像素。那么,在完全screnn模式下,我应该怎么做才能使我的程序在不同的资源上看起来相同呢?

更新:例如,我希望它像Photoshop一样。Photoshop在不同的背景下看起来几乎一样。图片:https://i.stack.imgur.com/W1SL6.pnghttps://i.stack.imgur.com/7KYxX.png

更新:我只想知道这些值应该是什么,才能让程序像我希望的那样工作:窗户高度,窗口宽度,网格高度,网格宽度,

对不起,兄弟们,我是个初学者:''

让全屏wpf应用程序在所有分辨率下看起来都一样

另一种方法是使用ViewBox:

<Viewbox StretchDirection="Both" Stretch="Uniform" />

例如:

<Window 
Height="480"
Width="800">
 <Viewbox StretchDirection="Both" Stretch="Uniform">
   <Grid Height="480" Width="800">
   </Grid>
 </ViewBox>
</Window>

现在,当您调整窗口大小时,所有元素也会调整大小。

不可能使应用程序在每个分辨率中看起来完全相同。其中一个问题是文本——很难像缩放按钮、ListBox或其他任何东西一样缩放文本。

但是,为了使您的应用程序看起来基本相似,您可以做的一件事是使用相对定位和大小调整,而不是像现在这样使用绝对值。

我很少发现像上面这样使用边距有用或成功,因为菜单偏移了400多个像素。通常,这最终会使你的设计看起来只有在你设计它们的确切尺寸上才好看。如果你想把它放在控件的顶部,你可以做以下操作:

<Menu ... VerticalAlignment="Top"  ...>

这将始终使此菜单与窗口顶部对齐。同样,如果你想让菜单在窗口中占据相同的相对垂直空间,而不管窗口的绝对大小,你可以使用Grid.RowDefinitions属性:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="10*"/>
        <RowDefinition Height="90*"/>
    </Grid.RowDefinitions>
   <Menu Grid.Row=0 />
</Grid>

这样,"菜单"将占据整个顶行,并且无论调整大小,都将占用窗口中10%的垂直空间。显然,存在一些边缘情况,特别是当控件的大小调整到无法再看到其包含的文本时-如果存在这些问题,则应在"窗口"或特定控件上使用"最小高度"answers"最小宽度",以提供一个有问题的控件不再收缩的楼层。

请注意,如果您没有显式设置Grid的大小,默认情况下,它会填充其父容器的全部内容——在本例中是整个Window。如果你想让你的应用程序看起来一样,你不能给父网格一个像800x480这样的绝对大小。