浏览器后退按钮第一次崩溃(SL 4,帧控制)

时间:2011-08-19 13:48:48

标签: silverlight

我遇到了问题。当页面第一次加载时,它会在框架中加载“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>

只是想知道这是一个已知的问题,还是只是做错了?

干杯。

1 个答案:

答案 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}"可以使用。)