Windows phone 7 在WP7中实现向导式UI的最佳方法

Windows phone 7 在WP7中实现向导式UI的最佳方法,windows-phone-7,Windows Phone 7,我正在移植一个运行在WindowsPhone7上的windows窗体程序 windows程序的一部分是向导式的一系列步骤,带有“下一步”和“上一步”按钮以及“保存”和“取消”。屏幕是从数据库中存储的元数据生成的。某些屏幕是可选的,仅在满足某些条件后创建 我的问题是——如何在WP7中最好地实现这一点 我最初的想法是使用pivot,但后来我读到他特别声明“不要在基于向导的UI中使用pivot/pano” 我有很多想法——我可以让每个屏幕都成为一个页面(由于后堆栈问题,我对此不太感兴趣),或者我可以使

我正在移植一个运行在WindowsPhone7上的windows窗体程序

windows程序的一部分是向导式的一系列步骤,带有“下一步”和“上一步”按钮以及“保存”和“取消”。屏幕是从数据库中存储的元数据生成的。某些屏幕是可选的,仅在满足某些条件后创建

我的问题是——如何在WP7中最好地实现这一点

我最初的想法是使用pivot,但后来我读到他特别声明“不要在基于向导的UI中使用pivot/pano”

我有很多想法——我可以让每个屏幕都成为一个页面(由于后堆栈问题,我对此不太感兴趣),或者我可以使用一个带有选项卡控件的页面——但从时间上看,我面临着挑战,不能浪费数天的时间朝错误的方向前进


有什么想法吗?我的WP7应用程序是通过Caliburn Micro使用MVVM构建的。

我最初的想法是不这样做,而是重新设计流程。但是,如果对您的情况和应用程序没有更深入的了解,就很难给出适当的建议

如果您很忙,并且确实必须这样做,我建议您使用单个页面并更新视图模型,以创建多个页面的外观

或者,您可以使用一系列页面和。
不过,这可能与它如何与应用程序的其余部分集成有关

我可以让每个屏幕都成为一个页面(由于后堆栈问题,我对此不太感兴趣)

服务人员可能会帮助您按下后退按钮

我可以使用一个带有选项卡控件的页面

我在WPF中使用restyled选项卡控件开发了一个类似向导的应用程序。有点凌乱,但效果很好

<>你需要首先设计它并考虑一些场景。当用户单击后退按钮、启动按钮或有人呼叫用户时会发生什么情况?(当应用程序被删除并且用户按下后退按钮时,操作系统将返回最后一页)。导航是否非常复杂(决策树)

仅制作一页,网格内有3个网格/堆栈面板。水平放置,边距为0;480; 960此时只能显示一个内部栅格。你可以看到一个例子(我给朋友开了个玩笑:P)

我使用了带有复合变换的堆栈面板

        <StackPanel Name="questionPanel" Grid.Row="0" HorizontalAlignment="Center">
            <StackPanel.RenderTransform>
             <CompositeTransform TranslateX="480"></CompositeTransform>
            </StackPanel.RenderTransform>

这种方法有一个优势,因为所有内容都在一个页面上,动画提供了良好的用户体验。对于更复杂的向导,请考虑使用自己的用户控件。

< P>,您是否尝试使用网格和使用App Bar上的“下一步”和“下一步”按钮来切换其可见性?“后退”按钮将充当“取消”按钮。

该应用程序允许用户设计数据捕获。用户定义存储在数据库中的屏幕、字段和业务规则。客户端应用程序根据元数据生成屏幕。单页更新视图模型听起来很有趣-有关于这方面的在线示例吗?谢谢。将在测试应用程序中尝试您的技术。另一个复杂的问题是,我有一个可变数量的“屏幕”,它们是动态构建的。
<UserControl.Resources>

    <Storyboard x:Name="centerPanelIn">
        <DoubleAnimation Duration="0:0:0.3" BeginTime="0:0:0.6" To="0"
                         Storyboard.TargetName="centerPanel"
                         Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)">
            <DoubleAnimation.EasingFunction>
                <ExponentialEase Exponent="6.0" EasingMode="EaseOut"></ExponentialEase>
            </DoubleAnimation.EasingFunction>
        </DoubleAnimation>
    </Storyboard>
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        centerPanelOut.Begin();
        centerPanelOut.Completed += new EventHandler(centerPanelOut_Completed);
    }