silverlight - SL3 Nav 框架 + MVVM 灯

标签 silverlight silverlight-3.0 mvvm navigation mvvm-light

感谢您花时间阅读我的问题。非常感谢任何指导。

我在我的 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}"> HyperlinkBut​​ton


知道怎么做吗?

谢谢您的帮助。
穆拉里

最佳答案

我不会使用查询字符串。
因为您使用的是 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/

相关文章:

silverlight - 在 silverlight 上制作 p2p 应用程序的最佳方式是什么

c# - 是否有适用于 Silverlight 的 C# 动态模拟框架?

c# - Silverlight 3 - Canvas 上矩形的数据绑定(bind)位置

c# - 一旦第二个窗口关闭,属性就会恢复为原始值

wpf - 如何在没有事件处理程序的情况下将焦点设置到 TextBox

silverlight - Telerik RadComboBox 不显示所选项目

c# - 如何在WP 7中使用gif动画图片

c# - 将 ASP.NET 应用程序转换为 Silverlight 应用程序

wpf - 如何将命令/属性绑定(bind)到 FSharp.ViewModule 中的 PropertyChanged

c# - 为什么 XAML(WPF) 不在我的 XML 命名空间定义中搜索控件?