2011-07-21 19 views
0

我知道标题不是很清楚,我会尽力更好地解释自己。如何从Silverlight中的“外部”.cs文件导航

我已经在我的MainPage.xaml列表框中,我想以某种方式填充。在这个目的,我有没有一个XAML文件Home.cs连接,它的构造是这样的:

public Home(string sid, ListBox lb){...} 

在此构造我做Web客户端几个POST请求,并在UploadStringCompleted方法,我创建的几个要素,堆叠面板,文本块和超链接按钮。

StackPanel bigPanel = new StackPanel(); 
bigPanel.Width = 456; 

HyperlinkButton hyperlink = new HyperlinkButton(); 
hyperlink.Content = friend.name + " " + person.surname; 
hyperlink.Click += new RoutedEventHandler(hyperlink_Click); 
bigPanel.Children.Add(hyperlink); 

lb.Items.Add(bigPanel); 

问题出在这里。我想要这个超链接导航到另一个页面(FriendPage.xaml),但我无法实现它,因为如果我尝试添加NavigationService.Navigate(new Uri(“/ FriendPage.xaml”,Urikind.Relative)),那么它失败时,它会显示“非静态方法Navigate需要对象引用”。

据我所知,这个代码行应该在MainPage.xaml,所以,有没有办法做到这一点?或者在MainPage.xaml.cs中放置hyperlink.Click事件处理程序,并将其绑定到一个不存在的超链接按钮?

谢谢

回答

0

因为是的NavigationService这里的一类,而不是一个对象,否则无法使用该功能NavigationService.Navigate。我认为你必须将NavigationService添加到你的构造函数的参数中,然后你可以使用它。就像这样:

public void nav(NavigationService ANavigationService) 
{ 
    ANavigationService.Navigate(new Uri("")); 
} 

的MainPage应有的NavigationService,实例,您可以通过首页

编辑: 你可以得到的NavigationService的一个实例中的MainPage本:

//in mainpage 
NavigationService navService = NavigationService.GetNavigationService(this); 
+0

耶!实际上,NavigationService.GetNavigationService(this)不起作用,但是this.NavigationService确实让你的答案成为答案 –

相关问题