WPF MVVM全屏应用程序分辨率适合

时间:2013-11-20 21:51:44

标签: wpf mvvm fullscreen resolution

我在WPF MVVM中制作游戏。我是在全屏幕上进行的,我试图为每个控件定位每个控件(我有宽度,高度和边距的属性)。这有点问题。

有没有办法让控件,页面自动适应屏幕分辨率?

现在我正在制作以下内容: 在视图模型中计算系数(屏幕宽度/设计宽度),然后我将每个宽度乘以该系数。我对身高做同样的事。

是否可以将其放置在xaml中并使其适合每个屏幕分辨率?

2 个答案:

答案 0 :(得分:2)

您可以使用ViewBox来自动扩展其子级。

答案 1 :(得分:0)

你正在艰难地做事。使用Grid之类的东西来设置布局。

看看这个例子:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="50"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Button Content="Hello, World" 
            Grid.Row="0"
            Height="95"/>
    <Button Content="Fixed Size" 
            Grid.Row="1"
            Height="95"
            VerticalAlignment="Top"/>
    <Button Content="Expanded Size 1" 
            Grid.Row="2"/>
    <Button Content="Expanded Size 2" 
            Grid.Row="3"/>
</Grid>

这就是:

  1. 你的第0行将自动调整大小为1.指定为控件的高度或2.如果未指定高度,它将自动调整大小为内容可见所需的空间大小
  2. 你的第1行是一个固定的大小,所以即使设置Button的高度,该行也只有50像素!自VerticalAlignment设置后,您会看到右上角为参考,“0th”y像素为“第49”(向下)y像素
  3. 见#4
  4. 由于Grid有两个RowDefinition设置为Height = *,这意味着它们将占用绘制其他控件后剩余的最大空间量。把它看作是补充。 * + * = 2*。这意味着每行将占用Y方向上剩余空间的一半。你有:

    ...
    <RowDefinition Height="*"/>
    <RowDefinition Height="3*"/>
    

    相反,这意味着(记住,* + 3 * = 4 *)具有高度*的行将占用剩余空间的1/4,而具有高度3 *的行将占用剩余空间的3/4。

  5. 希望这有帮助。