Como passar valores (parâmetros) entre páginas XAML?

Perguntas semelhantes foram feitas antes, mas esta questão se esforça para explorar mais opções e a capacidade de passar objetos complexos.

A questão é como passar parâmetros, mas ele realmente precisa ser dividido em três partes.

Ao navegar entre páginas em um aplicativo XAML, como você passa parâmetros?Qual é a diferença entre usar a navegação Uri e a navegação manual?Como objetos (não apenas strings) podem ser passados ​​ao usar a navegação Uri?

Exemplo de navegação Uri

page.NavigationService.Navigate(new Uri("/Views/Page.xaml", UriKind.Relative));

Exemplo de navegação manual

page.NavigationService.Navigate(new Page());

A resposta a essa pergunta se aplica ao WP7, ao silverlight, ao WPF e ao Windows 8.

Nota: Existe uma diferença entre o Silverlight e o Windows8

Windows Phone: as páginas são navegadas para usar um Uri e os dados são passados ​​como uma string de consulta ou uma instânciaWindows 8: as páginas são navegadas passando o tipo e os parâmetros como objetos

questionAnswers(1)

yourAnswerToTheQuestion