我的Silverlight应用程序中有相当于菜单页的内容。它在StackPanel中有一些超链接按钮。使用带有UriMapper的导航框架将超链接映射到应用程序中的其他页面uri。所有这些都显示在菜单页的LayoutRoot网格中。我希望整个应用程序都可以使用UriMapping,这意味着它应该在App.xaml中,但是我不知道如何将它放在那里,所以它可以工作。有什么想法吗?下面是一些与我得到的代码类似的代码:
<Grid x:Name="LayoutRoot">
<Border x:Name="ContentBorder" Style="{StaticResource ContentBorderStyle}">
<navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" Source="" Navigated="ContentFrame_Navigated" NavigationFailed="ContentFrame_NavigationFailed">
<navigation:Frame.UriMapper>
<uriMapper:UriMapper>
<uriMapper:UriMapping Uri="/AgencyTechnical" MappedUri="/Views/AgencyTechnical.xaml"/>
<uriMapper:UriMapping Uri="/AgencyBusiness" MappedUri="/Views/AgencyBusiness.xaml"/>
...
</uriMapper:UriMapper>
</navigation:Frame.UriMapper>
</navigation:Frame>
</Border>
<ScrollViewer x:Name="PageScrollViewer" Style="{StaticResource PageScrollViewerStyle}" Margin="10,10,0,0" Width="640">
<StackPanel Name="stackPanel1" Width="490" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,0,0" Height="326">
<TextBlock Text="Agency Screens" Name="AgencyScreenLabel" Style="{StaticResource MenuLabelStyle}" />
<HyperlinkButton Name="AgencyTechInfoLink" Style="{StaticResource LinksMenuStyle}"
Content="Agency Technical Information" ... />
<HyperlinkButton Name="AgencyTechInfoLink" Style="{StaticResource LinksMenuStyle}"
Content="Agency Technical Information" ... />
我接受了加布里埃尔·麦克亚当斯的回答,但我得稍微修改一下。我正在使用Silverlight导航页的模板,App.xaml中有一个资源字典,如果直接将映射添加到Application.Resource s节点中,就会干扰它。我发现我可以将映射添加到Styles.xaml中,它工作得很好。我得到一个“类型'ResourceDictionary'在ResourceDictionary中,没有密钥。”如果执行以下操作,则会出错:
<Application.Resources>
<... Uri mapping here />
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Assets/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
但是将它添加到Assets/Styles.xaml中效果很好。