Обычно я хотел бы использовать общий для навигации:Переход к существующей модели представления
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 на navigationService
и использовать отражение MakeGenericMethod
используя тип VM:
http://msdn.microsoft.com/en-us/library/system.reflection.methodinfo.makegenericmethod.aspx
Или вы могли бы использовать выше, заменив вызовы typeof
на viewModel.GetType()
(но вам придется переписать BuildQueryString на UriBuilder, поскольку он является частным - идите с вариант 1!)
Выбор за вами!