2013-08-22 4 views

ответ

1

Проверка источника показывает, что это в 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!)

Выбор за вами!

Смежные вопросы