如何在 UWP 中使用 VisualStateManager 将 Pivot 更改为 ScrollViewer?

How to change Pivot to ScrollViewer with VisualStateManager in UWP?

目前我有一个 ScrollViewer,其中包含三个水平相邻的网格(左、中、右)。但是当屏幕变窄时,我希望它变成具有这三个相同对象的 Pivot。所以我设法制作了一个 Pivot 并且工作正常,但现在我想围绕它构建一个 VisualStateManager 以在屏幕宽度发生变化时自动在 ScrollViewer 和 Pivot 之间切换。这可能吗?如果没有,您知道我如何使用 UWP 的其他功能来做到这一点吗?

这三个项目只是包含列表视图的简单网格,所以不用担心这些。但是我可以显示 Pivot 对象:

<Pivot>
   <Pivot.Items>
      <PivotItem Header="Left grid">
         <Grid x:Name="LeftGrid" />
      </PivotItem>

      <PivotItem Header="Middle grid">
         <Grid x:Name="MiddleGrid" />
      </PivotItem>

      <PivotItem Header="Right grid">
         <Grid x:Name="RightGrid" />
      </PivotItem>
   </Pivot.Items>
</Pivot>

这是 ScrollViewer 对象:

<ScrollViewer x:Name="scrollViewer">
   <Grid>
      <Grid x:Name="detailsGrid">
         <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
         </Grid.ColumnDefinitions>
         <Grid x:Name="LeftGrid" />
         <Grid x:Name="MiddleGrid" />
         <Grid x:Name="RightGrid" />
      </Grid>
   </Grid>
</ScrollViewer>

这是 VisualStateManager:

<VisualStateManager.VisualStateGroups>
   <VisualStateGroup>
      <VisualState x:Name="WideState">
         <VisualState.StateTriggers>
            <AdaptiveTrigger MinWindowWidth="400" />
         </VisualState.StateTriggers>
         <VisualState.Setters>
            <Setter Target="?" Value="?" /><!-- which values to I set here? -->
         </VisualState.Setters>
      </VisualState>
      <VisualState x:Name="NarrowState">
         <VisualState.StateTriggers>
            <AdaptiveTrigger MinWindowWidth="400" />
         </VisualState.StateTriggers>
         <VisualState.Setters>
            <Setter Target="?" Value="?" /><!-- which values to I set here? -->
         </VisualState.Setters>
      </VisualState>
   </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

目前有一个包含VisualStateManager的root-Grid,在VSM之下,root-Grid中有Pivot和ScrollViewer。我该如何继续?

无法在 VisualStateManager 内添加或删除控件。

或者,您可以将 GridPivot 放在同一页中,并将其中一个 Visibility 默认设置为 Collasped。 VisualStateManager 中的所有内容只是设置 GridPivotVisibility 属性。