用`WinRTXamlToolkit.Controls.AlternativePage`替换`Page`

时间:2013-04-21 13:40:20

标签: c# xaml windows-runtime winrt-xaml

我正在尝试使用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页面?

1 个答案:

答案 0 :(得分:2)

您是否进行了使用替代页面所需的其他更改?

查看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));
    }
}