我将所有现有的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>
在我的HyperlinkButton事件处理程序的回调中,我有以下内容:
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();
页面加载得很好。
我还尝试将HyperlinkButton的NavigateUri属性设置为“Login”。没有雪茄。
我会感激任何帮助!
提前多多感谢
答案 0 :(得分:0)
好的结果是显式设置Frame的UriMapper属性可以解决这个问题。看起来UriMapper没有被初始化并与Frame相关联。
<navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" UriMapper="{StaticResource uriMapper}"/>
以上解决了这个问题。