我是Silverlight的新手,面临从一个页面到另一个页面的导航问题。 这是我的方案
我有一个名为page1.xaml的页面。在这个页面中,我放置了一个导航框架并在其中加载login.xaml页面。
现在,在按钮单击(成功登录时),我需要移动到page2.xaml(这是另一种主页类型),它还包含另一个框架,我需要初始加载,myaccount.xaml页面在这个页面。
现在,我到目前为止所做的是。 在app.xaml页面中,
private void Application_Startup(object sender, StartupEventArgs e)
{
Panel grid = new Grid();
grid.Children.Add(new MasterSimple());
this.RootVisual = grid;
}
以上代码因为,我想将page1.xaml的根视觉更改为page2.xaml
现在在page1.xaml中,这是我的框架
<navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle2}"
Template="{StaticResource CustomTransitioningNavFrame}" Margin="0,8,0,0" Grid.Row="1" VerticalAlignment="Top" Height="270" Width="640">
<navigation:Frame.UriMapper>
<uriMapper:UriMapper>
<uriMapper:UriMapping Uri="/{pageName}" MappedUri="/{pageName}.xaml"/>
</uriMapper:UriMapper>
</navigation:Frame.UriMapper>
</navigation:Frame>
和page1.xaml构造函数,
this.ContentFrame.Navigate(new Uri("/Loginnew", UriKind.Relative));
所以上面的代码向我展示了我的page1.xaml页面,其中包含Loginnew.xaml。这很好。 现在在loginnew.xaml页面,我有一个按钮,它点击我需要导航到page2.xaml页面。我在点击按钮上写了下面的代码
MasterTest2 currentPresentationPage = new MasterTest2();
(App.Current.RootVisual as Panel).Children.Clear();
(App.Current.RootVisual as Panel).Children.Add(currentPresentationPage);
在page2.xaml页面上,我有这个框架
<navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}"
Navigating="ContentFrame_Navigating" Template="{StaticResource FrameControlTemplate1}">
</navigation:Frame>
及其构造函数,
ContentFrame.Navigate(new Uri("/myaccount", UriKind.Relative));
这是我的程序结构。
现在我的问题是,当我点击登录页面按钮时,它会显示page2.xaml页面。但是在page2.xaml页面中它只加载Loginnew.xaml页面,它不加载myaccount.xaml页面。 我还标记当我导航到page2.xaml时,地址栏中的URL更改为 http://www.abc.com/test.aspx#Loginnew
这是myaccount.xaml页面未加载的原因吗?我应该怎么做才能在page2.xaml的框架中加载myaccount.xaml页面?
答案 0 :(得分:1)
this.ContentFrame.Navigate(new Uri("/Loginnew", UriKind.Relative));
我已将上面的代码从构造函数移动到Frame的加载事件,它开始工作。 :)