2012-03-13 61 views
0

我有一个我的问题是我不能像Silverlight中那些不熟悉这项技术的大多数人一样在Silverlight中重定向我的页面。项目页面之间的Silverlight重定向

我设计了一个登录页面,第一,如果密码是正确的,我希望它直接到MainPage.xaml中

,你可以看到我尝试这些评论已经没有奏效的方法。我在这个网页搜索了一些关于这个问题的帖子,但我解决不了请帮助我。

当我尝试那一个;

Uri target = new Uri("MainPage",UriKind.Relative); 
NavigationService.Navigate(target); 

错误消息:Object reference not set to an instance of an object.

其实我们发现,和我的朋友一个解决方案;当代码进入if块时,我们用{this.Content = new MainPage();}来更改页面内容,而不是指向一个网页。 }方法和它的工作。但System.Windows.Browser.HtmlPage.Window.Navigate(目标)这一个是指导我们相同的登录页面或网页,如www.---.com以外的正常的HTML页面。

回答

0

通常,你需要使用的NavigationService做到这一点:

NavigationService.Navigate(new Uri("/MainPage", UriKind.Relative)); 

的的NavigationService是Page对象上的属性,因此它会在登录使用代码隐藏。

但是,在你提到你已经“已经完成了”之后,我意识到了这个问题。 Silverlight导航使用框架控件。此Frame控件位于默认项目的MainPage.xaml中。因此,您不是在框架内进行导航,但是您希望将整个屏幕更改为不同的屏幕,并且不需要Silverlight内置的导航服务。

我建议你或者(a)将Login作为页面放在MainPage上的Frame中(如果用户通过身份验证,则可以加载或卸载顶层链接)或者(b)不会为应用程序的其余部分使用导航,并使用像Caliburn.Micro这样的框架来处理视图之间的所有导航。

+0

我已经尝试从第一个地方我指出我的屏幕图片。 – 2012-03-13 23:39:46

+0

根据此信息更新。我假设你已经修改了App.xaml.cs以将Application RootVisual设置为新的Login视图。 – Bryant 2012-03-13 23:47:24

+0

实际上并不是我的App.xaml是this.RootVisual = new Login();在我的登录页面代码去时,如果块我更改页面的内容,所以它是一种适合我的目标现在。但是,仍然需要一些赞扬它。 – 2012-03-14 00:18:06