我试图使用Windows RT XAML Toolkit,以便可以访问TreeView控件。我创建了一个新的BlankApp,其中包含一个包含与以下内容类似的XAML的MainPage:

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

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">

    </Grid>
</Page>


我想将此Page更改为WinRTXamlToolkit.Controls.AlternativePage。我已将XAML修改为:

<xc:AlternativePage
    x:Class="BlankApp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:xc="using:WinRTXamlToolkit.Controls"
    xmlns:local="using:BlankApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">

    </Grid>
</xc:AlternativePage>


并修改了MainPage类以扩展WinRTXamlToolkit.Controls.AlternativePage而不是Page

现在,当我启动我的应用程序时,它在以下语句中失败:

        if (rootFrame.Content == null)
        {
            // When the navigation stack isn't restored navigate to the first page,
            // configuring the new page by passing required information as a navigation
            // parameter
            if (!rootFrame.Navigate(typeof(MainPage), args.Arguments))
            {
                throw new Exception("Failed to create initial page");
            }
        }


我收到“无法创建初始页面”,但没有更多详细信息。

所以我的问题是:
1.如何查找有关Navigate调用失败原因的更多详细信息?我尝试添加rootFrame.NavigationFailed += rootFrame_NavigationFailed;,但导航失败事件似乎未引发。
2.如何正确使用WinRTXamlToolkit.Controls.AlternativePage页面?

最佳答案

您是否做了使用备用页面所需的其余更改?

看一下SDK中的示例代码。具体在这里:

http://winrtxamltoolkit.codeplex.com/SourceControl/changeset/view/379f4af0e5862131aea1992f6875180abeddbcb6#WinRTXamlToolkit.Sample/AppShell.xaml.cs

public sealed partial class AppShell : UserControl
{
    public static AlternativeFrame Frame { get; private set; }

    public AppShell()
    {
        this.InitializeComponent();
        Frame = this.RootFrame;
        this.RootFrame.Navigate(typeof (MainPage));
    }
}

09-25 17:09