mirror of
https://github.com/farcasclaudiu/myfriendsaround.git
synced 2026-06-29 13:02:05 +03:00
83 lines
2.2 KiB
C#
83 lines
2.2 KiB
C#
using System;
|
|
using System.Net;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Ink;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Animation;
|
|
using System.Windows.Shapes;
|
|
using Microsoft.Phone.Controls;
|
|
using System.Windows.Navigation;
|
|
|
|
namespace MyFriendsAround.WP7.Helpers.Navigation
|
|
{
|
|
public class PageNavigation : IPageNavigation
|
|
{
|
|
|
|
private PhoneApplicationFrame mainFrame;
|
|
private bool EnsureMainFrame()
|
|
{
|
|
if (mainFrame != null)
|
|
{
|
|
return true;
|
|
}
|
|
mainFrame = Application.Current.RootVisual as PhoneApplicationFrame;
|
|
if (mainFrame != null)
|
|
{
|
|
// Could be null if the app runs inside a design tool
|
|
mainFrame.Navigating += (s, e) =>
|
|
{
|
|
if (Navigating != null)
|
|
{
|
|
Navigating(s, e);
|
|
}
|
|
};
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
#region IPageNavigation implementation
|
|
|
|
public event NavigatingCancelEventHandler Navigating;
|
|
|
|
private object currentContext;
|
|
public object CurrentContext
|
|
{
|
|
get { return this.currentContext; }
|
|
}
|
|
|
|
public void NavigateTo(Uri pageUri)
|
|
{
|
|
if (pageUri == null)
|
|
throw new ArgumentNullException("uri");
|
|
if (EnsureMainFrame())
|
|
this.NavigateTo(pageUri, null);
|
|
}
|
|
|
|
public void NavigateTo(Uri pageUri, object context)
|
|
{
|
|
if (pageUri == null)
|
|
throw new ArgumentNullException("uri");
|
|
if (EnsureMainFrame())
|
|
{
|
|
this.currentContext = context;
|
|
mainFrame.Navigate(pageUri);
|
|
}
|
|
}
|
|
|
|
public void GoBack()
|
|
{
|
|
if (EnsureMainFrame() && mainFrame.CanGoBack)
|
|
{
|
|
mainFrame.GoBack();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|