2015-10-19 96 views
0

我在想什么是在Windows 10/Windows 8(.1)应用程序中正确缩放视图的最佳方法。如何正确缩放视图

  • ViewBox?
  • VisualStateManager?
  • 其他?

我的图片已经由.scale-xxx.png

后缀在1366×768,我有: enter image description here

而在WXGA,我有: enter image description here

这里是我的xaml代码:

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="1*" /> 
     <RowDefinition Height="2*" /> 
     <RowDefinition Height="6*" /> 
     <RowDefinition Height="1*" /> 
    </Grid.RowDefinitions> 

    <TextBlock Text="{x:Bind ViewModel.Player, Mode=OneWay}" Margin="20,0,0,0" VerticalAlignment="Center" /> 

    <Image Grid.Row="0" Source="ms-appx:///Resources/Title/title-app.png" VerticalAlignment="Center" Stretch="None" HorizontalAlignment="Center" /> 
    <StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Right" Margin="10,5,25,5"> 
     <Image Source="ms-appx:///Resources/Rating/star-full.png" Stretch="None" /> 
     <TextBlock FontWeight="Bold" Margin="5,5,0,0" Text="{x:Bind ViewModel.Stars, Mode=OneWay}" FontSize="30" VerticalAlignment="Center" /> 
    </StackPanel> 

回答

0

在我看来它是VisualStateManager,因为在这里您可以找到具有MaxWindowWidth或MinWindowWidth的自适应触发器
。然后不同的VisulaStates将完美工作。

例如:

<VisualStateManager.VisualStateGroups> 
     <VisualStateGroup> 
      <VisualState x:Name="Width1250"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="1310"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="Button1.Visibility" Value="Visible"/> 
        <Setter Target="Button2.Visibility" Value="Visible"/> 
        <Setter Target="Button3.Visibility" Value="Visible"/> 
       </VisualState.Setters> 
      </VisualState> 

希望能帮助你:)

+0

'AdaptiveTrigger'在Windows 8.1中不可用(在问题中提到过)。 – WiredPrairie

+0

是的,你必须选择你使用的操作系统。我正在研究Windows 10的UWP,因为我更喜欢'AdaptiveTrigger'。 – blueeyes

+0

如果你需要Windows 10+,这是一个很好的解决方案。 – WiredPrairie

0

正如blueeyes说,你可以做到这一点使用可视状态。如果你不想改变设计,你可以简单地使用viewbox来适应分辨率(拉伸)。