【问题标题】:How to access query string value in viewmodel?如何访问视图模型中的查询字符串值?
【发布时间】:2012-12-24 09:20:10
【问题描述】:

我想将检查的 ID 列表 (checkedParcels) 传递到另一个页面以相应地显示详细信息列表。

为此,在第一个 ViewModel 中,我实现了可以导航到另一个页面的命令。这是代码:

Uri uri = new Uri("/UnitListForParcelPage?checkedParcel=" + checkedParcels,UriKind.Relative);
navigationService.NavigateTo(uri);

我可以导航到第二页,这里是浏览器中显示的地址:

http://example.com/PropMgmtTestPage.aspx#/UnitListForParcelPage?checkedParcel=System.Linq.Enumerable+WhereEnumerableIterator%601%5BPropMgmt.ParcelServiceRef.Parcel%5D

我的问题是我正在使用 ViewModel 在此页面上执行操作,但我找不到任何方法来访问通过查询字符串传递的值。

更新: 在页面代码隐藏上,我添加了以下代码:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string PSTR = NavigationContext.QueryString["checkedParcel"];
    MessageBox.Show(PSTR);
}

MessageBox 显示正确的值现在我只想将它绑定到 viewmodel 属性

我已使用此方法将视图模型绑定到视图:

<navigation:Page.Resources>
    <helpers:SimpleViewModelLocator ViewModelKey="UnitTransFormViewModel" x:Key="viewModelLocator"/>
</navigation:Page.Resources>
<navigation:Page.DataContext>
    <Binding Source="{StaticResource viewModelLocator}" Path="ViewModel"/>
</navigation:Page.DataContext>

【问题讨论】:

    标签: c# silverlight mvvm query-string silverlight-5.0


    【解决方案1】:

    另一种方法是创建一个公共属性并使用 checkedParcel 的值对其进行分配,现在您可以在 ViewModel Cheers 中使用它:)

    更新:

    做一个

    public static string checkedParcel = string.Empty; 
    

    在 App.Xaml.cs 中

    当你打电话时

    App.checkedParcel = checkedParcels;
    this.navigationService.NavigateTo(uri);
    

    在此之前,您需要将值赋予 App.checkedParcel =checkedParcels;

    在您的导航页面方法中

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        string PSTR = App.checkedParcel;
        MessageBox.Show(PSTR);
    }
    

    希望你能理解。您可以通过创建一个属性并相应地设置来实现这一点。

    【讨论】:

    • 我也更新了我的答案。请看一下。
    • 谢谢.. 我找了好几天... :)
    【解决方案2】:

    您可以使用广播服务(如果您使用 MVVM Light,例如 Messenger)发送“更改视图”通知以及您的参数。

    然后您就可以轻松地让 View 做出反应(导航)并且 ViewModel 获取它的参数。

    【讨论】:

      猜你喜欢
      • 2011-02-22
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2013-07-06
      相关资源
      最近更新 更多