Aïe aïe aïe 
Je te conseilles de lire un tutoriel parce que j'ai l'impression que tu t'es lancée dans la programmation WP7 sans n'avoir jamais rien lu.
Premièrement, concernant le double tap sur une cellule de ta listbox, je trouve ça un peu bizarre.
Je ne connais aucune application qui te demande de double cliquer sur un élément de liste pour faire une action. En plus, niveau validation chez Microsoft pour soumettre au Marketplace par la suite, je suis pas sûr qu'ils vont trop apprécier. Ca risque d'être une cause de refus (Must fix) ou avec un peu de chance, ils acceptent mais avec la mention "Should fix".
Pour avoir déjà déployé une application, je peux te dire qu'ils sont très chiants pour le respect des guidelines, encore plus qu'Apple (je suis également développeur iOS) et que mon appli WP7 a été refusée pour moins grave que ça.
Le plus propre est d'utiliser la callback SelectionChanged dans ta ListBox qui est appelée lorsque tu as cliqué sur un élément autre que celui déjà sélectionné.
Ensuite, concernant ton bout de code pour naviguer vers la page affichant l'article de l'item, ce n'est absolument pas comme ça qu'il faut procéder.
Il y a deux grosses erreurs.
La première concerne la manière dont tu navigues entre les pages. C'est n'importe quoi.
Il ne faut jamais instancier de page.
Lorsque tu appelles cette fonction:
NavigationService.Navigate(new Uri("/DetailsPage.xaml",UriKind.Relative));
cela instancie automatiquement une nouvelle page et te fait naviguer dedans.
C'est pour cela que quand tu instancies ta page et que tu lui settes des paramètres, rien ne fonctionne étant donné que ce n'est pas sur cette instance page que tu vas aller.
Ce que tu dois faire, c'est envoyer des paramètres dans l'URL de la page vers laquelle tu navigues, comme pour une page web.
Si par exemple, tu veux une page qui va afficher la description de l'item qui s'appelle toto, tu fais comme ça:
NavigationService.Navigate(new
Uri("/DetailsPage.xaml?nom=toto",UriKind.Relative)
);
Dans ton cas, comme tu dois envoyer une URL en paramètres, tu dois l'échapper pour pas que ce soit interprété comme autre chose qu'un paramètre. Cela se fait grâce à la méthode statique Uri.EscapeUriString().
Dans ton cas, voici ce qu'il faut donc faire
NavigationService.Navigate(new Uri(string.Format("/DetailsPage.xaml&url={0}",
Uri.EscapeUriString(mainPageViewModel.Items.Elemen
tAt(listItems.SelectedIndex).getUrl()))),UriKind.R
elative));
Ensuite, dans ta classe DetailsPage.xaml.cs, tu dois overrider ta méthode OnNavigatedTo qui te permet de récupérer les paramètres que tu as envoyés à la page.
protected override void
OnNavigatedTo(System.Windows.Navigation.Navigation
EventArgs e)
{
base.OnNavigatedTo(e);
string link;
//On essaye de récupérer le paramètre "url"
if (NavigationContext.QueryString.TryGetValue("url", out link))
{
/* J'imagine que c'est pour debugguer ton truc alors utilise les fonctions pour débugguer dans la console et pas un messagebox tout dégueu ^^ */
System.Diagnostics.Debug.WriteLine("setLink:" + link);
webBrowser1.Navigate(new Uri(link));
}
}
Cela devrait fonctionner. Mais dans ton cas, on n'a pas besoin de faire tout ça.
Si tout ce que tu voulais, c'était ouvrir une URL dans une nouvelle page, il y a les WebBrowserTask qui te permettent d'ouvrir Internet Explorer dans une nouvelle page.
Il aurait suffit de faire ça dans ta callback:
//Même si j'approuve pas le DoubleTap, soit
private void listItems_DoubleTap(object sender, GestureEventArgs e)
{
WebBrowserTask webbrowser = new WebBrowserTask();
webbrowser.Uri = new Uri(mainPageViewModel.Items.Elemen
tAt(listItems.SelectedIndex).getUrl());
webbrowser.Show();
}
Note que les WebBrowserTask sont une boîte noire et que tu n'as plus aucun contrôle de ce que fait l'utilisateur tant qu'il aura pas fait "back" pour retourner dans ta classe qui l'a lancée (donc MainPage.xaml.cs dans ton cas).
Moralité, suis un tuto tu perdras moins de temps 