如何从Silverlight中的“外部”.cs文件导航

时间:2011-07-21 10:39:36

标签: c# silverlight navigation

我知道标题不是很清楚,我会更好地解释自己。

我的MainPage.xaml中有一个我想以某种方式填充的列表框。为此,我有一个没有附加xaml的Home.cs文件,其构造函数如下:

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

在这个构造函数中,我用Webclient做了几个POST请求,在UploadStringCompleted方法中,我创建了几个元素,stackpanels,textblocks和一个超链接按钮。

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))那么它失败,它说“非静态方法导航需要一个对象引用”。

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

谢谢

1 个答案:

答案 0 :(得分:0)

您无法使用NavigationService.Navigate函数,因为NavigationService是此处的类,而不是对象。我认为您必须将NavigationService添加到home的构造函数中的参数,然后您可以使用它。像这样:

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

MainPage应该有一个NavigationService实例,您可以将其传递给Home

编辑: 您可以使用以下命令获取MainPage中导航服务的实例:

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