2010-07-29 3 views
4

SL4 앱에서 다음 프레임이 있습니다. 내가하고 싶은 것은 단위 테스트를하기 위해 프레임 내부를 탐색하는 페이지 객체를 얻는 것입니다 (URI가 필요하지 않습니다).프레임 안에서 내비게이션 된 페이지를 얻는 방법은 무엇입니까?

<navigation:Frame Margin="0,0,0,0" JournalOwnership="OwnsJournal" Source="{Binding CurrentPage}"> 
<navigation:Frame.UriMapper> 
    <uriMapper:UriMapper> 
     <uriMapper:UriMapping Uri="/User" MappedUri="/Views/UserPage.xaml"/> 
     <uriMapper:UriMapping Uri="/Login" MappedUri="/Views/LoginPage.xaml"/> 
     <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/> 
    </uriMapper:UriMapper> 
</navigation:Frame.UriMapper> 

는 사람이 어떻게 그렇게 말해 주 시겠어요? 사전에

감사합니다,
yokyo

답변

2

나는 잠시 동안 리플렉터와 System.Windows.Control.Navigation.dll 파고 후 해결책을 발견했다. 요구 사항을 충족시키는 편리한 속성은 없지만 다음 코드로 프레임별로 탐색 된 페이지 객체에 액세스 할 수 있습니다.

var page = _frame.Content as Page; // Make sure to run this code after navigating the page 

아무 것도 실제로 멋지지 않지만, 저에게는 효과적입니다.

건배,
yokyo는

1

난 당신이 무슨 뜻인지 알 것 같아요. 내 메인 페이지가 보안을 위해 어떤 페이지로 이동했는지 탐지하려고했습니다. 서로 다른 사용자가 서로 다른 페이지에 액세스 할 수 있으므로 사용자가 페이지에 액세스 할 수는 없지만 URL 바에 입력하면 해당 페이지로 이동할 수 있습니다. 그래서 어떤 페이지를 확인할 수있는 중심적인 장소를 원했습니다. 그들은 그들이 허락하는 것에 반대 할 것입니다. 나는 이렇게했다. 나는 MainPage.xaml.cs를에 ContentFrame_Navigated의 끝이 추가 : 나를 위해 일한

if (ContentFrame.Source.OriginalString.Contains("Tools")) 
{ 
    ContentFrame.Navigate(new Uri("/Home", UriKind.Relative)); 
} 

. 사용자가 Tools (도구)로 이동하도록 허용되었는지 여부를 확인한 부분에 그 부분이 있습니다.

관련 문제