Из вопроса неочевидно как всё-таки связаны Page1 и Page2.
Если из Page1 вызывается Page2, то самый простой способ при вызове создать экземпляр Page2 и присвоить значение переменной.
Navigate(new Page2(){ variable = "abc"});
Можно использовать для передачи объект состояния перехода — дополнительный параметр метода Navigate. Пример из MSDN:
void goButton_Click(object sender, RoutedEventArgs e)
{
this.NavigationService.Navigate(new ContentPage(), DateTime.Now);
}
void NavigationService_LoadCompleted(object sender, NavigationEventArgs e)
{
DateTime requestDateTime = (DateTime)e.ExtraData;
string msg = string.Format("Request started {0}\nRequest completed {1}", requestDateTime, DateTime.Now);
MessageBox.Show(msg);
}
Ну и самый нерекомендуемый способ - использование статических свойств для передачи состояния.