windows-phone-7 - 在 MVVM Light 中使用 RelayCommand<T> 进行导航

标签 windows-phone-7 mvvm-light

我一直在关注 Jesse Liberty 的 tutorial在适用于 Windows Phone 7 的 MVVM Light 上,但我陷入了这个问题。我需要从主页导航到详细信息页面。按照教程,我在 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);

最佳答案

您需要注册才能接收该类型的消息,然后进行适当的导航。
以下内容假定页面名称,并且您通过在查询字符串中传递特定客户的 ID 来导航到特定客户的详细信息。

Messenger.Default.Register<Customer>(
    this,
    c => NavigationService.Navigate("/Pages/CustomerDetails.xaml?cid=" + c.Id));

然后您可以相应地调整您的代码:

private void GoToDetailsPage(Customer msg)
{
    Messenger.Default.Send(msg);
}

我希望这会有所帮助。

关于windows-phone-7 - 在 MVVM Light 中使用 RelayCommand<T> 进行导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6711168/

相关文章:

c# - 想在WP7的外部浏览器中打开链接

c# - RaisePropertyChanged 无法更新 UI

WPF MVVM Light 数据绑定(bind)上下文菜单以列出 View 项

windows-phone-7 - MVVM是否适合WP7应用开发?

c# - Windows Phone 实时控制 : SignInButton - how to prevent it from connecting to internet?

android - 其他平台上的 c# windows 移动应用程序?

c# - NUnit 测试因 System.IO.FileNotFoundExeption 而失败

windows-phone-7 - 使用 ViewModelLocator 抓取其他 VM 以在另一个 Vm 中使用是否不好?

wpf - MVVM 和 MVC 之间共享模型?

windows-xp - Windows Phone 7 系列模拟器可以在 Windows XP 上运行吗?