WP7 - 如何设置开始页面到外部页面(在库中)

时间:2010-12-08 21:07:26

标签: windows-phone-7 navigation


我对WP7很感兴趣。基本上整个导航概念很糟糕,但我不想详细介绍。我基本上把它扔掉了,并使用我自己的“PRISM like”导航。

现在还有一个问题,我有3个应用程序,都使用相同的基础架构库,并从该库中获取页面。 AppA和AppB之间的唯一区别是加载了数据库。 99%的代码保持不变。

我目前在AppA中所做的是手动转到一种IntroPage(基本上只显示启动画面),然后,一旦加载此页面,我的框架就会接管并导航到相应的页面(试验与真实等等。)

现在,由于WP7的这个伟大功能只能通过一直导航BACK来启用应用程序的退出,想要离开应用程序的用户必须再次通过“加载屏幕”。至少如果他使用后退按钮。我不介意,但我可能会失败的市场规则,通过在“回来的路上”显示加载屏幕......

我试图告诉我的框架“如果你第二次到达介绍页面,快速导航回来”退出应用程序。引发异常,似乎我不允许以这种方式退出应用程序。

然后我尝试更改属性/ WMAppManifest.xml 来调整它,尝试这样的事情

Name =“_ default”NavigationPage =“/ InfrastructureLib; component / Pages / RealStartPage.xaml”

也不起作用......我错过了一些东西(很确定它只是一些愚蠢的错字)或者是我想做的事情是不可能的? (将应用程序的起始页面设置为其他库中的页面)

如果没有,有没有人知道如何调整App.xaml以允许从另一个库加载自定义页面作为起始页?

3 个答案:

答案 0 :(得分:1)

我认为这是支持的,但你必须做一个小改动。在WMAppManifest.xml中,而不是 NavigationPage = “/ InfrastructureLib;组件/页/ RealStartPage.xaml” 使用 NavigationPage = “InfrastructureLib;组件/页/ RealStartPage.xaml” 松开路径中的第一个'/'。它适用于我的WP 7.1。

答案 1 :(得分:0)

关于将不同页面设置为起始页的问题的答案:

您可以从Manifest文件中删除该条目,并直接从App.xaml.cs调用另一个库中的页面。最好的地方是发射方法

    private void Application_Launching(object sender, LaunchingEventArgs e)
    {
        Uri nUri = new Uri("/InfrastructureLib;component/Gui/Pages/IntroPage.xaml", UriKind.Relative);
        ((App)Application.Current).RootFrame.Navigate(nUri);
    }

答案 2 :(得分:0)

我遇到了类似的问题,因为我想根据保存的设置在不同的页面上启动应用程序。我无法直接将RootFrame的内容设置为除WMAppManifest中命名的页面之外的任何内容。我按照之前的建议尝试了Navigate(),直接设置了内容,并设置了Source。非常反直觉,但没有任何效果!

我终于选择创建一个StartView.xaml来为我做切换。它只包含

<phone:PhoneApplicationPage x:Class="MyApp.Views.StartView" ...>
    <ContentControl x:Name="body" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"/>
</phone:PhoneApplicationPage>

它的构造函数根据加载的设置填充body.Content。

public StartView() {
    InitializeComponent();

    switch (App.Current.Settings.StartPage) {
        default:      body.Content = new MainPage();  break;
        case "Other": body.Content = new OtherPage(); break;
    }
}

这可以避免您在Navigate()中注意到的问题,因此您无需返回虚拟的“正在加载”页面。需要注意的是(禁用页面缓存),当您向后导航时,将根据当时的设置填充正文,这可能与用户从该页面导航时的设置不同。也许这就是你想要的!如果没有,使用瞬态PhoneApplicationService状态可以轻松解决问题。

缺憾?有点,但是当什么工作不起作用时你会怎么做? HTH。