我在WPF MVVM中制作游戏 . 我是在全屏幕上进行的,我试图为每个控件定位每个控件(我有宽度,高度和边距的属性) . 这有点问题 .
有没有办法让控件,页面自动适应屏幕分辨率?
现在我正在制作以下内容:在视图模型中计算系数(屏幕宽度/设计宽度)然后我将每个宽度乘以该系数 . 我对身高做同样的事 .
是否可以将其放置在xaml中并使其适合每个屏幕分辨率?
您可以使用ViewBox来自动缩放其子项 .
你正在艰难地做事 . 使用像 Grid 之类的东西来设置你的布局 .
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>
这是发生的事情:
你的第0行将自动调整大小为1.指定为控件的高度或2.如果未指定高度,它将自动调整大小为内容可见所需的空间大小
你的第1行是固定大小,所以即使设置了 Button 的高度,该行也只有50像素!由于设置了 VerticalAlignment ,您会看到右上角作为参考,"0th" y像素到"49th"(向下)y像素
Button
VerticalAlignment
见#4
由于Grid有两个RowDefinition设置为Height = *,这意味着它们将占用绘制其他控件后剩余的最大空间量 . 把它看作是补充 . * + * = 2* . 这意味着每行将占用Y方向上剩余空间的一半 . 你有过:
* + * = 2*
... <RowDefinition Height="*"/> <RowDefinition Height="3*"/>
相反,这意味着(记住,* 3 * = 4 )具有高度的行将占用剩余空间的1/4,而具有高度3 *的行将占用剩余空间的3/4 .
希望这可以帮助 .
2 回答
您可以使用ViewBox来自动缩放其子项 .
你正在艰难地做事 . 使用像
Grid
之类的东西来设置你的布局 .看看这个例子:
这是发生的事情:
你的第0行将自动调整大小为1.指定为控件的高度或2.如果未指定高度,它将自动调整大小为内容可见所需的空间大小
你的第1行是固定大小,所以即使设置了
Button
的高度,该行也只有50像素!由于设置了VerticalAlignment
,您会看到右上角作为参考,"0th" y像素到"49th"(向下)y像素见#4
由于Grid有两个RowDefinition设置为Height = *,这意味着它们将占用绘制其他控件后剩余的最大空间量 . 把它看作是补充 .
* + * = 2*
. 这意味着每行将占用Y方向上剩余空间的一半 . 你有过:相反,这意味着(记住,* 3 * = 4 )具有高度的行将占用剩余空间的1/4,而具有高度3 *的行将占用剩余空间的3/4 .
希望这可以帮助 .