我有一個旨在創建一個窗口的實例,並返回我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 –