Accueil > Windows Phone 7 > WP7 ListPicker dans un ScrollViewer entraîne un bug

WP7 ListPicker dans un ScrollViewer entraîne un bug

Le contrôle ComboBox n’existant pas sous Windows Phone 7 alors je me suis rabattu sur le contrôle ListPicker du toolkit Silverlight pour Windows Phone datant du mois d’août 2011. A ma grande surprise j’ai constaté que si l’on met un ListPicker à l’intérieur d’un ScrollViewer, ce contrôle sera rempli avec les éléments voulus mais vous ne pourrez cependant pas sélectionner un item de la liste tout simplement parce que la liste ne se déploie pas que vous assigniez ExpansionAllowed ou FullScreenOnly pour la propriété ExpansionMode. Une petite recherche m’a mené ici et pour pallier à ce problème voici la solution proposée :

public bool isListPickerClosed = true;

private void ListPicker_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
	ListPicker lp = (ListPicker)sender;

	if (isListPickerClosed)
	{
		if (lp.ListPickerMode == ListPickerMode.Normal)
			lp.ListPickerMode = lp.ListPickerMode;

		isListPickerClosed = false;
	}
	else
	{
		isListPickerClosed = true;
	}
}  

Cette solution pourtant qui devrait marcher ne marche pas parce que VS nous indique que la propriété ListPickerMode est en lecture seule ce qu’on ne comprend pas vu que la documentation indique la phrase suivante « Gets or sets the ListPickerMode (Ex:Normal/Expand/Full) ». Cette documentation indique bien qu’on peut modifier cette propriété alors qu’en réalité il est impossible. Pour résoudre ce problème il faut faire appel à la méthode Open() du ListPicker à la place de l’assignation de la propriété ListPickerMode (correction que j’ai proposée dans la même discussion dans ce forum ici) ce qui donne le résultat suivant :

public bool isListPickerClosed = true;

private void ListPicker_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
	ListPicker lp = (ListPicker)sender;

	if (isListPickerClosed)
	{
		if (lp.ListPickerMode == ListPickerMode.Normal)
			lp.Open();

		isListPickerClosed = false;
	}
	else
	{
		isListPickerClosed = true;
	}
}  

Nota Béné : Cette solution n’est que temporaire parce que je pense que le bug sera bientôt corrigé par les auteurs du toolkit.

Publicités
Catégories :Windows Phone 7 Étiquettes : ,
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :