使用C#/ VS2013.1
编写的Windows应用商店应用我已经完成了一个复杂的Grid / StackPanel排列,其中的按钮,图像,复选框都在Viewbox标签内,如下所示:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="8*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="8*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Viewbox Grid.Row="1" Grid.Column="1" Stretch="Uniform">
<Grid>
... (lots of nested elements)
</Grid>
</Viewbox>
</Grid>
目标是动态缩放页面,沿每条边留下约10%的边框。我尝试在不同的分辨率和设备上运行它,一切看起来都很完美。
我的问题是,使用Viewbox以这种方式包装复杂/嵌套元素是否有不利之处,而不是精心规划和编码每个元素中的宽度/高度/字体,以便它们适当地扩展到应用程序的任何分辨率运行?我读了一些帖子,建议只有在其他方法失败时才使用Viewbox(或者设计师在首次编写XAML时没有考虑缩放)。这有什么理由吗?
答案 0 :(得分:3)
如果&#34;很多嵌套元素&#34;在没有固定宽度缩放的情况下设计Viewbox
是不必要的,因为如果将Grid
设置为拉伸到其容器,{{1}}将自动适合80%宽度/高度。添加不必要的布局元素只会增加应用程序的渲染时间要求,这是这里的主要缺点。
但是,如果内容已满&#34;固定大小&#34;元素(即:您有硬编码的宽度或高度等),然后这将为您提供快速,轻松的缩放。鉴于此显示完全符合您的要求,除非您发现当前解决方案存在某些特定问题,否则我会离开它。