这是我的情况: - 我有一个WebApi,它向我发送一个json数据。 - 我的应用程序读取此数据并将所有信息绑定在列表框中 - 当我点击列表框的项目时,我想显示有关该项目的所有信息
问题是:如何在新视图上绑定数据? 这是点击后的代码(MainViewModel):
this.ProfessorDetail = new RelayCommand(() =>
{
if (SelectedIndexProfessors != -1)
{
//This variable contain all detail information
Professor x = Professors.ElementAt(SelectedIndexProfessors);
//Open new page
App.RootFrame.Navigate(new Uri("/Pages/ProfessorDetailPage.xaml", UriKind.RelativeOrAbsolute));
}
});
答案 0 :(得分:1)
您可以使用Uri
参数在页面之间传递简单的字符串信息。例如,在RelayCommand
传递有关所选教授的唯一信息:
.........
//pass selected professor Id to ProfessorDetailPage
App.RootFrame.Navigate(new Uri("/Pages/ProfessorDetailPage.xaml?professorId=" + x.ProfessorId, UriKind.RelativeOrAbsolute));
.........
然后在ProfessorDetailPage
的{{1}}或Loaded
事件处理程序中获取uri参数并相应地显示信息:
NavigatedTo
答案 1 :(得分:0)
我从未创建过基于页面的应用程序,但我查看了this链接,并且从WPF的基本知识来看,我知道您需要像您要求的那样设置该页面的DataContext
。
请查看链接中的以下代码:
this.Frame.Navigate(typeof(BasicPage2), tb1.Text);
即将tb1
中输入的文字发送到您导航到的对象。然后看看接收对象如何利用该信息:
private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
string name = e.NavigationParameter as string;
....
}
你会想要遵循同样的想法,除了你想要做的事情:
App.RootFrame.Navigate(new Uri(".....", ...), x);
然后在页面本身中,您将要在ProfessorDetailPage
控件中设置LoadState事件并在其中执行:
Professor prof = x as Professor;
if( prof != null)
{
this.DataContext = prof;
}
应设置DataContext
的{{1}},并填充您的数据。
让我知道它是如何运作的,希望这有帮助!