从一个页面滑动到另一个页面

时间:2015-09-16 11:32:23

标签: c# .net xaml win-universal-app

如何让Windows Universal App的用户从一个页面滑动到另一个页面? (我觉得这很容易找到,但搜索还没有找到答案。)

如果这可以在一页内完成 - 那也很好。 (要滑出一个网格,另一个网格。)

4 个答案:

答案 0 :(得分:4)

枢轴控制的行为就像你描述的那样。

请参阅guidelines for tabs and pivots

示例:

<Page x:Class="App1.MainPage"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 mc:Ignorable="d">

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Pivot>
        <PivotItem Header="Item 1" Background="Black" />
        <PivotItem Header="Item 2" Background="Red" />
        <PivotItem Header="Item 3" Background="Blue" />
    </Pivot>
</Grid>

答案 1 :(得分:2)

您可以使用GestureRecognizer并操纵您想要做的事情。为FX创建动画。

答案 2 :(得分:1)

我想说使用git checkout my_branch git reset --soft HEAD~4 git commit git push --force origin my_branch 控件,但如果您的观点太复杂,那可能会很危险。 FlipView会保持您的网页呈现并随时可以翻转。我认为你可以尝试实现自己的东西来保持低内存使用率。也许使用GestureRecognizer,这样您就可以控制用户可以滑动的位置,只能渲染您需要的内容并丢弃任何过时的内容或屏幕外的内容。

FlipView也会产生这种效果,但区别在于它必须将一个元素从屏幕上完全滑出,然后将下一个元素滑入。它不会同时呈现两个或三个视图,这是对记忆有好处。但是,您将无法同时看到两个页面滑入/滑出。

尝试两者,看看哪种方式最适合你。

答案 3 :(得分:0)

我有点类似于您的要求:

如何从一页“刷”到另一页:

在第1页上(您将从中滑动FROM的页面) 制作一个网格,并将这些值放在:

XAML:

<Grid Padding="15,15,15,15" 
      HorizontalAlignment="Left" 
      VerticalAlignment="Stretch" 
      ManipulationMode="TranslateX,TranslateInertia,System" 
      ManipulationDelta="SwipeablePage_ManipulationDelta"
      ManipulationCompleted="SwipeablePage_ManipulationCompleted">

后面的代码:

private bool _isSwiped;
private void SwipeablePage_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
    if (e.IsInertial && !_isSwiped)
    {
        var swipedDistance = e.Cumulative.Translation.X;

        if (Math.Abs(swipedDistance) <= 2) return;

        if (swipedDistance > 0)
        {
            // go to next page
            this.Frame.Navigate(typeof(Page2));
        }
        else
        {
            // do nothing 
        }
        _isSwiped = true;
    }
}