我遇到了问题。当页面第一次加载时,它会在框架中加载“AlbumView.xaml”。当我单击后退按钮时,它会抛出以下错误消息:
未处理的异常(Silverlight应用程序中的未处理错误:4004' 类别:ManageRuntimeError 消息:System.ArgumentException:无法加载URI的内容。 URI可能无效。
以下是代码:
<Grid Grid.Row="1" Name="Main">
<sdk:Frame Source="About" Name="MainFrame" BorderThickness="2">
<sdk:Frame.UriMapper>
<sdk:UriMapper>
<sdk:UriMapping
Uri="About"
MappedUri="/Views/AlbumView.xaml"/>
<sdk:UriMapping
Uri="Categories"
MappedUri="/Views/AlbumCategoriesView.xaml"/>
</sdk:UriMapper>
</sdk:Frame.UriMapper>
</sdk:Frame>
</Grid>
只是想知道这是一个已知的问题,还是只是做错了?
干杯。
答案 0 :(得分:1)
问题是你没有映射到空Uri“”。您将框架Source
设置为“关于”。应用程序加载后,导航到“#About”。按后退按钮,“关于”消失,让UriMapper尝试映射“”。你没有,所以失败了。
添加附加映射: -
<sdk:UriMapping Uri="" MappedUri="/Views/AlbumView.xaml" />
可以防止看到错误。
但请考虑将“AlbumView.xaml”重命名为“About.xaml”,将“AlbumCategoriesView.xaml”重命名为“Categories.xaml”。然后,您可以使用更传统的映射器: -
<sdk:Frame Source="/About" Name="MainFrame" BorderThickness="2">
<sdk:Frame.UriMapper>
<sdk:UriMapper>
<sdk:UriMapping Uri="" MappedUri="/Views/About.xaml" />
<sdk:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml" />
</sdk:UriMapper>
</sdk:Frame.UriMapper>
</sdk:Frame>
现在,您可以使用要在视图的URL中显示的名称创建新视图,而无需每次都扩展映射列表。 (另请注意使用前面的/,这是常见的做法,Uri="/{pageName}"
可以使用。)