在Universal App中更改DefaultPage的位置

时间:2015-06-14 19:36:47

标签: c# xaml win-universal-app

如何在MainPage.xaml中更改默认Universal Windows App的位置?我希望在Windows和WindowsPhone项目中有一个名为“View”的子文件夹,我保存MainPage.xaml文件就像这个例子一样。

- Windows项目
- 查看
--- MainPage.xaml

- WindowsPhone项目
- 查看
--- MainPagePhone.xaml

- 共享文件
- 型号
- ViewModel
- App.xaml

根据该结构,我在App.xaml.cs中遇到了无法找到MainPage的问题。

if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))
{
    throw new Exception("Failed to create initial page");
}

2 个答案:

答案 0 :(得分:2)

首先,您不需要为文件指定不同的名称,对于手机和电脑项目都使用MainPage,并将MainPage.xaml放在视图文件夹中。 通用应用程序将知道它运行的平台,并将相应地加载正确的页面。 您需要在两个项目中创建视图文件夹和MainPage.xaml文件。 删除View文件夹之外的每个MainPage.xaml文件。

然后导航到App.xaml.cs共享文件。

查看onLaunched方法,您应该在方法的最后找到类似的内容:

if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))
{
    throw new Exception("Failed to create initial page");
}

这是您的项目尝试加载页面的地方。 MainPage应该标记为错误,因为我们错过了引用。

因此,请将其添加到App.xaml.cs页面的顶部:

using NameOfYourProjectHere.View;

让我知道它是否有效!

答案 1 :(得分:0)

如果你想拥有不同的名字(mainWinPage / mainPhonePage),你每次在共享项目中使用它时都要告诉他要采取哪一个:

#include yournamespace.Views;
..

#if WINDOWS_APP
if (!rootFrame.Navigate(typeof(MainWinPage), e.Arguments))
...
#else // or #if WINDOWS_PHONE_APP
if (!rootFrame.Navigate(typeof(MainPhonePage), e.Arguments))
...
#endif

或只是使用相同的名称,使其更容易。