私は、UriMapperを持つフレームを含むUserControlを持っています。これも私のRootVisualなので、アプリケーションがロードされたときにロードされるものです。これは私の(簡略化された)XAMLです:ナビゲーションフレームを含むSilverlight UserControlからNavigationServiceを呼び出します。
<UserControl>
<navigation:Frame x:Name="ContentFrame" Source="/Page1">
<navigation:Frame.UriMapper>
<uriMapper:UriMapper>
<uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
<uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
</uriMapper:UriMapper>
</navigation:Frame.UriMapper>
</navigation:Frame>
<HyperlinkButton x:Name="Page1Link" NavigateUri="/Page1" TargetName="ContentFrame" Content="Page1"/>
<HyperlinkButton x:Name="Page2Link" NavigateUri="/Page2" TargetName="ContentFrame" Content="Page2"/>
</UserControl>
これはすべて素晴らしいですが、今すぐ戻るボタンを追加します。ユーザーがボタンをクリックすると、私は
NavigationService.GoBack();
を呼び出したい私は、ページ(ページ1とページ2)からのNavigationServiceを呼び出すことができますが、どのように私は、この「親」からのNavigationServiceを呼び出すことができ、ユーザーコントロール?出来ますか?このUserControlでは、NavigationServiceは常にnullです。
フレームに表示されているページからNavigationServiceにアクセスするか、ボタンのクリックイベントをこれらのページに渡します。
各ページにボタンを配置し、そこにナビゲーションを処理する必要はありません。名前は= "ContentFrame":