C# 如何使用UWP中的VisualStateManager将Pivot更改为ScrollViewer?

C# 如何使用UWP中的VisualStateManager将Pivot更改为ScrollViewer?,c#,xaml,windows-10,uwp,C#,Xaml,Windows 10,Uwp,目前我有一个ScrollViewer,它包含三个水平相邻的网格(左、中、右)。但是当屏幕很窄时,我希望它变成一个轴,轴上有三个相同的物体。因此,我成功地制作了一个透视图,效果很好,但现在我想围绕它构建一个VisualStateManager,以便在屏幕宽度改变时在ScrollViewer和透视图之间自动切换。这可能吗?如果没有,您知道我如何利用UWP的其他功能做到这一点吗 这三项只是包含ListView的简单网格,所以不用担心这些。但是,我可以显示轴对象: <Pivot> &l

目前我有一个ScrollViewer,它包含三个水平相邻的网格(左、中、右)。但是当屏幕很窄时,我希望它变成一个轴,轴上有三个相同的物体。因此,我成功地制作了一个透视图,效果很好,但现在我想围绕它构建一个VisualStateManager,以便在屏幕宽度改变时在ScrollViewer和透视图之间自动切换。这可能吗?如果没有,您知道我如何利用UWP的其他功能做到这一点吗

这三项只是包含ListView的简单网格,所以不用担心这些。但是,我可以显示轴对象:

<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,在VSM下面的根网格中有Pivot和ScrollViewer。如何继续?

无法在
VisualStateManager
中添加或删除控件


或者,您可以将
网格
放在同一页面中,并默认将其中一个
可见性
设置为
折叠
。VisualStateManager中的所有内容都只是设置
网格的
可见性
属性
透视图

,我将对其进行研究。这是Windows10XAML中的一个新控件,可以实现您想要的功能。这就是我想要的。但是现在我两次使用相同的代码,有没有一种方法可以将网格存储在某个变量中并使用对该变量的引用?我还是一个XAML新手。试试
UserControl
,它允许您将XAML或代码封装在一个控件中,并在其他XAML中使用。