我知道标题不是很清楚,我会更好地解释自己。
我的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中放置超链接。单击事件处理程序并将其绑定到尚不存在的超链接按钮?
谢谢
答案 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);