您好我想将字符串传递给另一个viewmodel。我正在尝试使用此代码,但它不符合我的目的,因为我需要知道收件人视图的viewmodel中的字符串值。我怎么能做到这一点?你也可以用mvvm-light和命令建议更好的方法,因为我的概念在这两个方面并不是那么清楚。
public MainViewModel()
{
GiveDetails = new RelayCommand<object>(DoSomething);
}
private void DoSomething(object param)
{
var rootFrame = (App.Current as App).RootFrame;
rootFrame.Navigate(new System.Uri("/Details.xaml?ID="+param.ToString(), System.UriKind.Relative));
}
我目前还不知道如何在收件人视图模型上处理参数。
答案 0 :(得分:1)
在Stack Careers Browser中,当从主页面视图中选择职业时,我在DetailsPage.xaml.cs上的OnNavigatedTo事件中有以下内容。
if (DataContext == null)
{
string selectedIndex = "";
if (NavigationContext.QueryString.TryGetValue("selectedItem", out selectedIndex))
{
**int index = int.Parse(selectedIndex);**
**DataContext = _vm = new JobPostingViewModel(App.ViewModel.JobPostings[index]);**
Indicators.SetIndicators(this, DataContext);
await _vm.ScrapeThatScreenAsync(_vm.JobPosting.Id);
}
}
相应的viewmodel有一个如下所示的构造函数:
public JobPostingViewModel(JobPosting jobPosting)
{
if (jobPosting == null)
throw new ArgumentNullException("jobPosting");
JoelTestResults = new ObservableCollection<JoelTestResult>();
// JoelTestResults = new ObservableCollection<string>(){"a","b","c"};
_jobPosting = jobPosting;
if (jobPosting.Categories != null && jobPosting.Categories.Any())
ProcessCategories(jobPosting.Categories);
}
我需要一些基本对象才能处理更多信息并以windows phone 8方式显示。