使用Viewbox扩展C#XAML的优点/缺点

时间:2014-03-11 22:24:00

标签: c# xaml windows-store-apps screen-resolution viewbox

使用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时没有考虑缩放)。这有什么理由吗?

1 个答案:

答案 0 :(得分:3)

如果&#34;很多嵌套元素&#34;在没有固定宽度缩放的情况下设计Viewbox是不必要的,因为如果将Grid设置为拉伸到其容器,{{1}}将自动适合80%宽度/高度。添加不必要的布局元素只会增加应用程序的渲染时间要求,这是这里的主要缺点。

但是,如果内容已满&#34;固定大小&#34;元素(即:您有硬编码的宽度或高度等),然后这将为您提供快速,轻松的缩放。鉴于此显示完全符合您的要求,除非您发现当前解决方案存在某些特定问题,否则我会离开它。