【问题标题】:SL3 Nav framework + MVVM lighSL3 Nav 框架 + MVVM 灯
【发布时间】:2011-01-22 11:12:47
【问题描述】:

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

我在我的 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"];
        }
    }

我想在我的视图模型中检索查询参数,并根据查询参数执行某些操作。当构造函数被调用时,我希望“视图”传递 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

知道怎么做吗??

感谢您的帮助。 穆拉里

【问题讨论】:

    标签: silverlight silverlight-3.0 mvvm navigation mvvm-light


    【解决方案1】:

    我不会使用查询字符串。 因为您使用的是 MVVM Light Toolkit。查看 Messenger 并利用公共订阅者模式。类似于 PRISM Eventtaggregator。

    发送“Staffcode”并订阅每个需要利用它的视图模型。您也可以发送整个员工对象。

    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 之间的通信应该通过消息传递来完成。事件聚合器或信使。

    希望这会有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 2015-06-05
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 2011-04-15
      相关资源
      最近更新 更多