SL 3导航无法正常工作!

时间:2010-06-11 05:12:46

标签: silverlight .net-3.5 silverlight-3.0 navigation

我将所有现有的Silverlight app UserControls转换为Pages,以便我可以使用导航框架。

无论如何,我创建了一个名为MyFrame的UserControl,它将托管所有页面。 在我的App.xaml.cs中,我有以下内容以确保在App加载时加载MyFrame:

private void Application_Startup(object sender, StartupEventArgs e)
{
    this.RootVisual = new MyFrame();
}

我的UriMapper类位于App.xaml中,如下所示:

<navcore:UriMapper x:Key="uriMapper">
    <navcore:UriMapping Uri="Login" MappedUri="Login.xaml">
</navcore:UriMapper>

在我的“MyFrame”课程中,我有以下内容

<StackPanel Orientation="Horizontal">
    <StackPanel Orientation="Vertical">
        <HyperlinkButton Tag="Login" Content="Login" Click="HyperlinkButton_Click" />
    </StackPanel>
    <StackPanel Orientation="Vertical">
        <navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" />
     </StackPanel>
 </StackPanel>

在我的HyperlinkBut​​ton事件处理程序的回调中,我有以下内容:

private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
{
    ContentFrame.Navigate(new Uri((sender as HyperlinkButton).Tag.ToString(), UriKind.Relative));
}

Login.xaml文件位于我的根文件夹中(位于Project下)。这个导航似乎不起作用! 我得到的例外是这样的:

  

导航仅支持作为片段的相对URI,或以'/'开头,或者包含'; component /'。   参数名称:uri

登录页面未加载。与我设置

时一样,Login.xaml没有问题
this.RootVisual = new Login();

页面加载得很好。

我还尝试将HyperlinkBut​​ton的NavigateUri属性设置为“Login”。没有雪茄。

我会感激任何帮助!

提前多多感谢

1 个答案:

答案 0 :(得分:0)

好的结果是显式设置Frame的UriMapper属性可以解决这个问题。看起来UriMapper没有被初始化并与Frame相关联。

 <navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" UriMapper="{StaticResource uriMapper}"/>

以上解决了这个问题。