我有一个旨在创建一个窗口的实例,并返回我RelayCommand
(基本上,它只是一个MVVMLite辅助方法的功能:传递XAML窗口类型的功能
public static RelayCommand NavigateTo(Type navigateTo)
{
var relayCmd = new RelayCommand (() => Navigate(navigateTo));
return relayCmd;
}
private static void Navigate(Type navigateTo)
{
var newWin = Activator.CreateInstance(navigateTo);
((Window)newWin).Show();
}
然后我把这个在这样一个单独的类:
this.MyCommand = Navigation.NavigateTo(View.MyView);
MyView的是一个有效的窗口,不过,我得到以下编译错误:
The best overloaded method match for 'MyProject.Navigation.NavigateTo(System.Type)' has some invalid arguments
我可以让它工作,这样做:
this.MyCommand = Navigation.NavigateTo(typeof(View.MyView));
我的问题是:为什么?我正在传递一个类型并期待类型。另外,有没有一种方法可以让我的NavigateTo
函数简单地接受窗口的类名?
有趣的是,我最近刚刚回答了一个类似于Windows Phone的静态类型导航:http://stackoverflow.com/questions/20004086/is-there-a -typesafe路 - 中 - 导航屏式窗口电话间#20063659分之20063659 –