2012-03-08 18 views
1

私は、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":

答えて

2

は、xとナビゲーション・フレームを含むあなたの親のUserControlで

ContentFrame.Navigate(YOUR_URI); 

ContentFrame.GoBack(); 

を使用してみてください。

関連する問題