2012-03-08 1 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에서 호출 할 수 있습니다? 가능한가? 이 UserControl에서 NavigationService는 항상 null입니다.

프레임에 표시된 페이지에서 NavigationService에 액세스하거나 버튼 클릭 이벤트를이 페이지로 전달하려고합니다.

각 페이지에 버튼을 배치하고 탐색을 처리하고 싶지 않습니다.

답변

2

X와 탐색 프레임을 포함하여 부모의 UserControl에

ContentFrame.GoBack(); 

ContentFrame.Navigate(YOUR_URI); 

를 사용해보십시오 : 이름 = "ContentFrame".