Windows phone 8 未设置查询字符串-Cimbalino Windows Phone
我正在使用导航,但从未为我设置查询参数 主视图模型Windows phone 8 未设置查询字符串-Cimbalino Windows Phone,windows-phone-8,query-string,cimbalino,Windows Phone 8,Query String,Cimbalino,我正在使用导航,但从未为我设置查询参数 主视图模型 private readonly INavigationService navigationService = null; public MainViewModel(INavigationService navigationService) { this.navigationService = navigationService; NavigateToPg2Cmd = new RelayCo
private readonly INavigationService navigationService = null;
public MainViewModel(INavigationService navigationService)
{
this.navigationService = navigationService;
NavigateToPg2Cmd = new RelayCommand(() => NaviagateToPg2());
NavigateToPg2WithParmsCmd = new RelayCommand(() => NaviagateToPg2WithParms());
}
private void NaviagateToPg2WithParms()
{
navigationService.NavigateTo(new Uri("/Views/SecondPg.xaml?parameter=1&parm2=2", UriKind.Relative));
}
当我查看NavigationService时,查询参数字典总是0
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
}
else
{
}
SimpleIoc.Default.Register<INavigationService, NavigationService>();
SimpleIoc.Default.Register<MainViewModel>();
SimpleIoc.Default.Register<SecondVM>();
}
什么也不起作用,因为我想也太早了。不过,我真的很想在构建时将其拔出,有什么方法可以做到这一点吗?我知道这不是您要寻找的100%解决方案,但您是真的。。。在访问ViewModel中的QueryString参数之前,需要等待视图加载完毕 要执行此操作,请钩住视图的
Loaded
事件,并将其传递给viewmodel上的命令
如果在我的github上创建了一个演示,让您开始:不确定这段代码会出现什么问题。。。也许可以先尝试一个工作演示,看看你是否可以将其应用于你的应用程序?这里有一个完整的例子:谢谢,这帮助我解决了这个问题,但不确定解决方案是什么。问题是,我猜在触发NavigateTo之后,查询字符串不会立即被拆分,因此我总是看到零。另一个问题是,我试图访问第二页构造函数中的查询字符串,这似乎也很早就得到了它。酷,这可能是我必须要做的。我想我可以设置一个私有属性,然后在构造函数的下一行中使用该属性(或者在ViewLoaded中执行所有操作)
private readonly INavigationService navigationService = null;
public SecondVM(INavigationService navigationService)
{
this.navigationService = navigationService;
if (IsInDesignMode)
{
Message = "Design Mode";
}
else
{
if (navigationService.QueryString.ContainsKey("paramter"))
{
Message = navigationService.QueryString["parameter"];
}
}
}