我一直在关注MVView Light for Windows Phone 7上的Jesse Liberty tutorial,但我仍然坚持这个问题。我需要从主页面导航到详细页面。在本教程之后,我在MainViewModel中使用了一个RelayCommand:
public RelayCommand<Customer> DetailsPageCommand { get; private set;}
然后我在构造函数中初始化它:
DetailsPageCommand = new RelayCommand<Customer>((msg) => GoToDetailsPage(msg));
最后,您实现了GoToDetailsPage方法:
private object GoToDetailsPage(Customer msg)
{
System.Windows.MessageBox.Show("Go to details page with: " +
msg.First +
" " +
msg.Last );
return null;
}
显示消息框有效,但我不确定如何导航到详细信息页面。在教程页面的前几部分中,导航的处理方式如下:
var msg = new GoToPageMessage {PageName = "DetailPage"};
Messenger.Default.Send(msg);
答案 0 :(得分:5)
您需要注册才能接收该类型的消息,然后进行适当的导航 以下假定页面名称,并通过在查询字符串中传递其ID来导航到特定客户的详细信息。
Messenger.Default.Register<Customer>(
this,
c => NavigationService.Navigate("/Pages/CustomerDetails.xaml?cid=" + c.Id));
然后您可以相应地调整代码:
private void GoToDetailsPage(Customer msg)
{
Messenger.Default.Send(msg);
}
我希望这会有所帮助。