在WinRT XAML中使用Viewbox和背景图像为许多不同的分辨率定义可伸缩的灵活布局

在WinRT XAML中使用Viewbox和背景图像为许多不同的分辨率定义可伸缩的灵活布局,xaml,windows-runtime,winrt-xaml,Xaml,Windows Runtime,Winrt Xaml,我的目标是创建一个XAML页面,该页面具有一种“启动页面”或“起始页面”,其宽度为屏幕宽度的70%(在左侧),其他30%(在右侧)是内容的第一部分,是滚动查看器中的下一个面板。这个滚动视图可以无限滚动并显示各种内容,但是不管屏幕的分辨率如何,我们仍然可以看到70/30分割 我试图用一个视图框、几个网格和背景的图像笔刷来完成这项工作 问题是,在大分辨率上,如1600xFOO,左侧的had(70%)面板占据了整个屏幕。在表面平板电脑上,或在1366x768等更小分辨率的平板电脑上,它可以正确调整尺寸

我的目标是创建一个XAML页面,该页面具有一种“启动页面”或“起始页面”,其宽度为屏幕宽度的70%(在左侧),其他30%(在右侧)是内容的第一部分,是滚动查看器中的下一个面板。这个滚动视图可以无限滚动并显示各种内容,但是不管屏幕的分辨率如何,我们仍然可以看到70/30分割

我试图用一个视图框、几个网格和背景的图像笔刷来完成这项工作

问题是,在大分辨率上,如1600xFOO,左侧的had(70%)面板占据了整个屏幕。在表面平板电脑上,或在1366x768等更小分辨率的平板电脑上,它可以正确调整尺寸

这是我正在使用的XAML-高级:

下面是我希望这个XAML在不考虑分辨率的情况下的表现:

在大屏幕上,左侧面板最终占据整个屏幕

以下是有关WinRT和Windows应用商店应用程序中的缩放和多分辨率的一些资源:

我想避免做的一件事(对于我想象中的大多数XAML pro来说,这是一件不需要动脑筋的事)是使用任何实际宽度,或者在运行时检测屏幕分辨率并动态调整大小:

我不反对但想避免的一件事是使用Width={Binding MyParentGrid ActualWidth}hack,这似乎可行,但我尝试使用纯Viewbox/Grid缩放


我认为我的问题的关键是在父面板中更好地定义拉伸/对齐,或者通过使用其他种类的xaml技巧

我不确定我是否理解正确,但70/30分割可以像这样轻松完成:

  <Grid >
      <Grid.ColumnDefinitions>
          <ColumnDefinition Width="7*"/>
          <ColumnDefinition Width="3*"/>
      </Grid.ColumnDefinitions>


        <ListView Grid.Column="1"/>
   </Grid>

您希望用于解决此问题的机制(星形大小调整和Viewbox)取决于其父容器的大小以自动计算大小。在普通窗口中,这使得进行百分比分割变得很容易,因为根网格知道其直接父窗口的大小。在本例中,您在布局的这两部分之间插入了一个ScrollViewer,因此网格不再知道可见大小,只知道ScrollViewer的ExtentWidth。调整第一列大小时,您更关心的大小是ViewportWidth(大致相当于窗口宽度)

可能最简单的处理方法是根据屏幕大小从代码隐藏设置大小。您还需要在窗口的SizeChanged事件上重置窗口拆分和屏幕旋转