2015-10-19 101 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來適應分辨率(拉伸)。