Skip to content

Instantly share code, notes, and snippets.

@vermegi
Created December 15, 2013 16:30
internal class WindowsPhoneNavigator : INavigate
{
private readonly PhoneApplicationFrame _frame;
private readonly IKnowWhereYourViewIs _viewLocator;
private readonly ISerializeObjects _serializer;
public WindowsPhoneNavigator(PhoneApplicationFrame rootFrame,
IKnowWhereYourViewIs viewLocator,
ISerializeObjects serializer)
{
_frame = rootFrame;
_viewLocator = viewLocator;
_serializer = serializer;
}
public void NavigateTo<TViewModel>() where TViewModel : class
{
var viewToNavigateTo = _viewLocator.FindViewFor<TViewModel>();
var uri = new Uri(string.Format("/Views/{0}.xaml?vmtype={1}", viewToNavigateTo.Name, typeof(TViewModel).AssemblyQualifiedName), UriKind.RelativeOrAbsolute);
_frame.Navigate(uri);
}
public void NavigateTo<TViewModel, TRequest>(TRequest request) where TViewModel : class
{
var viewToNavigateTo = _viewLocator.FindViewFor<TViewModel>();
var serializedRequest = _serializer.Serialize(request);
var uri = new Uri(string.Format("/Views/{0}.xaml?vmtype={1}&request={2}&requestType={3}", viewToNavigateTo.Name, typeof(TViewModel).AssemblyQualifiedName, serializedRequest, typeof(TRequest).AssemblyQualifiedName), UriKind.RelativeOrAbsolute);
_frame.Navigate(uri);
}
public void GoBack()
{
_frame.GoBack();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment