我正在尝试在我的viewmodels中检索uri参数。我尝试了几件事,但没有任何工作按预期...我想模仿OnNavigatedTo和OnNavigatedFrom Page的方法,所以我写道:
在我的ViewBase类中(从Page继承):
public ViewModelBase ViewModel
{
get { return this.DataContext as ViewModelBase; }
protected set
{
if (value != this.DataContext)
{
this.DataContext = value;
}
}
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
this.ViewModel.OnNavigatedFrom(e.Uri);
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
this.ViewModel.OnNavigatedTo(e.Uri);
}
并在我的ViewModelBase类中:
public virtual void OnNavigatedFrom(Uri uri)
{
}
public virtual void OnNavigatedTo(Uri uri)
{
}
如果我这样做有什么问题?
提前致谢...
答案 0 :(得分:2)
通常在MVVM中,您可以使用某种形式的命令或许多MVVM框架提供的替代方法。我会认真考虑使用MVVM框架,例如Prism,MVVM Light Toolkit或Caliburn.Micro。它们都有自己的机制,可以从视图中调用视图模型上的动词。