我在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
答案 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));
}
这对我有用。我在检查用户是否被允许进入工具的部分内有这个。