我有我的Silverlight应用程序中的菜单页。它在StackPanel中有一些HyperlinkButtons。超链接通过带有UriMapper的导航框架映射到应用中的其他页面Uris。它全部出现在菜单页面的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" ... />
同样,我该如何让这个导航框架可用于整个应用程序?我在一个地方?
我接受@Gabriel McAdams的回答,但我不得不稍微修改它。我正在使用Silverlight导航页面的模板,并且在App.xaml中有一个资源字典,如果将该映射直接添加到Application.Resources节点中,该字段会受到干扰。我发现我可以将映射添加到Styles.xaml并且工作正常。我得到一个“类型'ResourceDictionary'是在一个ResourceDictionary中,并没有一个键。”错误,如果我做到以下几点:
<Application.Resources>
<... Uri mapping here />
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Assets/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
但它增加了资产/ Styles.xaml的伟大工程。