通常、ナビゲーションにはジェネリックを使用します。
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 onを使用し、VM のタイプを使用してnavigationService
リフレクションを使用します。MakeGenericMethod
http://msdn.microsoft.com/en-us/library/system.reflection.methodinfo.makegenericmethod.aspx
typeof
または、呼び出しを aに置き換えて、上記のコードを使用することもできますviewModel.GetType()
(ただし、UriBuilder の BuildQueryString は非公開であるため、書き換える必要があります。オプション 1 を使用してください)。
選択はあなた次第です!