【问题标题】:state manager for xaml SplitView pane inside frame框架内 xaml SplitView 窗格的状态管理器
【发布时间】:2015-09-21 06:29:38
【问题描述】:

标题有点长。 所以我有一个 Shell.xaml,内容为 .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 邮件应用程序)。

现在 Frame 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# xaml win-universal-app


    【解决方案1】:

    您需要删除在选择框架的列表视图事件中找到的 c# 代码的此元素

    我认为这应该对你有帮助

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      相关资源
      最近更新 更多