通常我会使用通用导航:
navigationService
.UriFor<PivotPageViewModel>()
.Navigate();
但是,如果我有一个现有的视图模型实例,我该怎么办?
通常我会使用通用导航:
navigationService
.UriFor<PivotPageViewModel>()
.Navigate();
但是,如果我有一个现有的视图模型实例,我该怎么办?
检查来源揭示了这一点UriBuilder
public Uri BuildUri()
{
var viewType = ViewLocator.LocateTypeForModelType(typeof(TViewModel), null, null);
if(viewType == null)
{
throw new InvalidOperationException(string.Format("No view was found for {0}. See the log for searched views.", typeof(TViewModel).FullName));
}
var packUri = ViewLocator.DeterminePackUriFromType(typeof(TViewModel), viewType);
var qs = BuildQueryString();
return new Uri(packUri + qs, UriKind.Relative);
}
因此,您可以使用 GetType并使用VM 的类型navigationService
使用反射:MakeGenericMethod
http://msdn.microsoft.com/en-us/library/system.reflection.methodinfo.makegenericmethod.aspx
或者您可以使用上面的代码,typeof
用 a 替换调用viewModel.GetType()
(但您必须在 UriBuilder 上重写 BuildQueryString,因为它是私有的 - 使用选项 1!)
这是你的选择!