如何在Frame内部导航页面?

时间:2010-07-29 02:45:13

标签: silverlight

我在SL4应用程序中有以下Frame。我想要做的是在框架内导航页面对象进行单元测试(我不需要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 个答案:

答案 0 :(得分:2)

我在使用Reflector挖掘System.Windows.Control.Navigation.dll一段时间后找到了解决方案。没有方便的属性来满足我的要求,但我可以使用以下代码通过框架访问导航的页面对象。

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

没有什么真的很酷,但它对我有用。

干杯,
yokyo

答案 1 :(得分:1)

我想我知道你的意思。为了安全起见,我试图让我的主页检测正在导航的页面。允许不同的用户访问不同的页面,因此如果不允许用户访问页面,但是他们将其键入URL栏,他们就可以去那里,所以我想要一个中心位置,我可以检查哪个页面他们会反对他们被允许去的地方。 我是这样做的。我将此添加到MainPage.xaml.cs中的ContentFrame_Navigated的末尾:

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

这对我有用。我在检查用户是否被允许进入工具的部分内有这个。