感谢您花时间阅读我的问题。任何指导都非常感谢。
我在LOB应用程序中使用SL3 Navigation框架。我目前正在使用MVVM Light作为框架指南。
我有一个由员工组成的数据网格,当“用户”点击数据网格中的“员工ID链接”时,我将用户转移到“编辑页面”。我想将“员工ID”作为查询参数传输到“编辑页面”。
这里的问题是:我可以访问EditStaffView.xaml.cs中的查询参数 - 我不想这样做。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (this.NavigationContext.QueryString.ContainsKey("staffcode"))
{
string title = this.NavigationContext.QueryString["staffcode"];
}
}
我想在我的viewmodel中检索查询参数,并根据查询参数,我将执行某些操作。当调用构造函数时,我希望“view”传递staffid,如下所示
public EditStaffViewModel(int staffId)
{
LoadData(staffId);
}
我正在动态地构建数据网格中的超链接按钮,如下所示:
staffListingModel.HyperlinkNavigationUri = string.Format(“{0} {1}”,NavigationUri.DataEntryEditStaff,“?staffcode = {”+ staffListingModel.StaffCode +“}”);
和XAML看起来
HyperlinkButton Content =“{Binding StaffCode,Mode = TwoWay}”NavigateUri =“{Binding HyperlinkNavigationUri}”> HyperlinkButton
知道怎么做吗?
感谢您的帮助。 穆拉里
答案 0 :(得分:0)
我不会使用Querystring。 因为你正在使用MVVM Light Toolkit。看看Messenger并利用公众的用户模式。与PRISM Eventaggregator类似。
发送“Staffcode”并订阅每个需要利用它的viewmodel。您也可以发送整个雇员对象。
Messenger.Default.Send(selectedEmployee);
Messenger.Default.Subscribe(本); Messinging请参考此链接: http://blog.galasoft.ch/archive/2010/03/16/whatrsquos-new-in-mvvm-light-v3.aspx Eventaggregator: http://msdn.microsoft.com/en-us/library/cc707867.aspx
如果深度链接和导航与mvvm结合使用,你必须要有所不同。 ViewModel之间的通信应该通过Messenging完成。 Eventaggregator或Messenger。
希望这会有所帮助......