2015-11-02 74 views
0

我正在将Wp81应用程序移植到UWP,并且似乎Hub布局策略已更改,并且它不再调整HubSections宽度以将其拉伸(几乎)到屏幕宽度。如何在UWP中实现这个功能而不在HubSections上设置绝对宽度?UWP中的HubSection默认宽度

详细了解我的使用情况: 在我HubSection我有一个形象,那不是被收缩到屏幕宽度(几乎是 - 使下部分是分享范围),它延伸到它的原生宽度。 TextBlock也是如此。看来在UWP HubSection没有根据屏幕宽度设置宽度或MaxWith。

+0

您是否尝试过检查/修改控件的样式? – Romasz

+0

@Romasz是的,Hub风格或HubSection风格没有明确的宽度设置。 – bitninja

回答

0

枢纽的目的是让用户发现的东西。所以该部分默认情况下不会被拉伸到全屏。对于你的情况,你最好试试Pivot控制。 Here是Pivot和Hub的设计指南。

此外,如果你仍然想使用集线器和想要的风格,以适应不同的屏幕尺寸,下面是一个简单的解决方案由VisualStateManager:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup> 
      <VisualState x:Name="Phone" > 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="1" /> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="HeroImg.Width" Value="100" /> 
       </VisualState.Setters> 
      </VisualState> 
      <VisualState x:Name="Tablet" > 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="600" /> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="HeroImg.Width" Value="800" /> 
       </VisualState.Setters> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 

    <Hub Header="News" > 
     <HubSection Header="Hero" x:Name ="HeroImg" > 
      <HubSection.Background> 
       <ImageBrush ImageSource="Assets/circle_hero.jpg" Stretch="UniformToFill"/> 
      </HubSection.Background> 
     </HubSection> 

    </Hub> 
</Grid> 
+0

我的用例符合Hub设计准则。至少让我们假设它是这样做的。我在关于我想实现的问题中添加了详细的信息。 – bitninja

+0

HubSection具有“宽度”,“最小宽度”,“最大宽度”属性。你可以在这里查看:https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=zh-CN&k=k(Windows.UI.Xaml.Controls.HubSection);k(VS.XamlEditor);k (TargetFrameworkMoniker-.NETCore,Version%3Dv4.5.1)&rd = true –

+0

如果要适应屏幕大小,可以使用VisualStateGroups。您可以参考此示例中的scenario2:https://code.msdn.microsoft.com/XAML-Hub-control-sample-5d116fa9 –