2011-03-16 60 views
0

我想在我的viewmodels中检索uri参数。我试图severals的事情,但没有按预期工作......我想模仿页的OnNavigatedTo和OnNavigatedFrom方法,所以我写了:在mvvm中,我们可以从视图中调用viewmodel的方法吗?

在我ViewBase类(从页继承):


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) 
{ 
} 

如果我这样做会出现什么问题?

在此先感谢...

回答

2

通常在MVVM你会使用某种形式的指挥或替代,许多MVVM框架提供。我会认真考虑使用MVVM框架,如Prism,MVVM Light ToolkitCaliburn.Micro。他们都有自己的机制来从视图上调用视图模型上的动词。