状态管理器的xaml SplitView窗格内的框架



标题太长了。所以我有一个壳层。Xaml的

<Grid>
<VisualStateManager.VisualStateGroups>
    <VisualStateGroup>
        <VisualState>
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="720" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="ShellSplitView.DisplayMode" Value="CompactInline"/>
            </VisualState.Setters>
        </VisualState>
        <VisualState>
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="0" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="ShellSplitView.DisplayMode" Value="Overlay"/>
            </VisualState.Setters>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<SplitView x:Name="ShellSplitView">
    <SplitView.Pane>
        <Grid>
            <ListView x:Name="NavMenuList">
            ...
            </ListView>
        </Grid>
    </SplitView.Pane>
    <Frame x:Name="ContentFrame">
    </Frame>
</SplitView>
</Grid>

在这个框架内,其他。xaml的实际内容被加载。那些也使用a(添加进一步的深度,像邮件应用程序:文件夹->电子邮件列表->电子邮件视图),但如果我添加a到嵌套的xaml它不做任何事情。

我的目标是让它在小视图中表现得像两个独立的帧(像手机),所以用户可以在它们之间导航(再次,像win10邮件应用程序)。

现在框架xaml的VisualStateManager看起来像这样,但这只是一个测试,看看它的工作。正如我提到的,我更喜欢类似于邮件应用程序的行为。

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup>
        <VisualState>
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="720" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="PeopleSplitView.DisplayMode" Value="Inline"/>
            </VisualState.Setters>
        </VisualState>
        <VisualState>
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="0" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="PeopleSplitView.DisplayMode" Value="CompactInline"/>
                <Setter Target="PeopleSplitView.IsPanelOpen" Value="False"/>
            </VisualState.Setters>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

同样,当调整窗口的大小时,框架拆分视图的内容不会调整自己的大小,而是保持全宽度(因此不会包装文本)。

<SplitView x:Name="PeopleSplitView"
           DisplayMode="Inline"
           IsPaneOpen="True"
           OpenPaneLength="400"
           CompactPaneLength="48">
    <SplitView.Pane></SplitView.Pane>
    <SplitView.Content>
        <Grid Padding="0">
            <ListView.../> 
        </Grid>
    </SplitView.Content>
</SplitView> 

你需要删除你的c#代码中的这个元素,这个元素是在listview的事件中找到的,它选择了框架

我想这对你有帮助

private void ListViewSplit_Tapped(object sender,TappedRoutedEventArgs e)
 { 
    //delete those lines
    if (MySplitView.IsPaneOpen)
        MySplitView.IsPaneOpen = !MySplitView.IsPaneOpen;                                           
  }

最新更新