感谢您花时间阅读我的问题。非常感谢任何指导。
我在我的 LOB 应用程序中使用 SL3 导航框架。我目前使用 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"];
}
}
我想在我的 View 模型中检索查询参数,并根据查询参数执行某些操作。当构造函数被调用时,我希望“ View ”传递 Staffid,如下所示
public EditStaffViewModel(int staffId)
{
LoadData(staffId);
}
我正在数据网格中动态构建我的超链接按钮,如下所示:
staffListingModel.HyperlinkNavigationUri = string.Format("{0}{1}", NavigationUri.DataEntryEditStaff,"?staffcode={"+ staffListingModel.StaffCode + "}");
XAML 看起来
超链接按钮
Content="{Binding StaffCode,Mode=TwoWay}"NavigateUri="{Binding HyperlinkNavigationUri}"> HyperlinkButton
知道怎么做吗?
谢谢您的帮助。
穆拉里
最佳答案
我不会使用查询字符串。
因为您使用的是 MVVM Light Toolkit。查看 Messenger 并利用公共(public)订阅者模式。类似于 PRISM Eventtaggregator。
发送“Staffcode”并订阅每个需要利用它的 View 模型。您还可以发送整个员工对象。
Messenger.Default.Send(selectedEmployee);
Messenger.Default.Subscribe(this);
引用此链接进行困惑:
http://blog.galasoft.ch/archive/2010/03/16/whatrsquos-new-in-mvvm-light-v3.aspx
事件聚合器:
http://msdn.microsoft.com/en-us/library/cc707867.aspx
如果深度链接和导航与 mvvm 结合使用,您必须考虑不同。 ViewModel 之间的通信应该通过消息传递来完成。事件聚合器或信使。
希望这可以帮助...
关于silverlight - SL3 Nav 框架 + MVVM 灯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2358894/