C# 如何在viewmodel中访问查询字符串值?

C# 如何在viewmodel中访问查询字符串值?,c#,silverlight,mvvm,query-string,silverlight-5.0,C#,Silverlight,Mvvm,Query String,Silverlight 5.0,我想将已检查Id的列表(checkedParcels)传递到另一个页面,以相应地显示详细信息列表 对于第一个ViewModel,我实现了一个命令,在这个命令上我可以导航到另一个页面。这是代码: Uri uri = new Uri("/UnitListForParcelPage?checkedParcel=" + checkedParcels,UriKind.Relative); navigationService.NavigateTo(uri); 我可以导航到第二页,这里是浏览器中显示的地址:

我想将已检查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+其中EnumerableIterator%601%5PropMgmt.ParcelService用于包裹%5D

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

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

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string PSTR = NavigationContext.QueryString["checkedParcel"];
    MessageBox.Show(PSTR);
}
MessageBox现在显示正确的值,我只想将其绑定到viewmodel属性

我已使用此方法将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>

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


然后,您可以轻松地让视图做出反应(导航),ViewModel获得其参数。

另一种方法是创建公共属性并将其指定为checkedParcel的值,现在您可以在ViewModel中使用它:)

更新:

做一个

public static string checkedParcel = string.Empty; 
在App.Xaml.cs中

当你打电话的时候

App.checkedParcel = checkedParcels;
this.navigationService.NavigateTo(uri);
在此之前,您需要将值赋给App.checkedParcels=checkedParcels

在你的导航页面mathod中

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

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

我还更新了我的答案。请看一下。谢谢。。我找了好几天了……:)