J'ai une application de test très simple pour jouer avec Windows Phone 7. Je viens d'ajouter un TextBox
et un TextBlock
au modèle d'interface utilisateur standard. Le seul code personnalisé est le suivant:
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
}
private int counter = 0;
private void TextBoxChanged(object sender, TextChangedEventArgs e)
{
textBlock1.Text += "Text changed " + (counter++) + "\r\n";
}
}
L' TextBox.TextChanged
événement est câblé TextBoxChanged
dans le XAML:
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
Cependant, chaque fois que j'appuie sur une touche lors de l'exécution dans l'émulateur (que ce soit le clavier à l'écran ou le clavier physique, après avoir appuyé sur Pause pour activer ce dernier), il incrémente le compteur deux fois, affichant deux lignes dans le TextBlock
. Tout ce que j'ai essayé montre que l'événement se déclenche vraiment deux fois, et je ne sais pas pourquoi. J'ai vérifié qu'il n'est abonné qu'une seule fois - si je me désinscris dans le MainPage
constructeur, rien ne se passe du tout (au bloc de texte) lorsque le texte change.
J'ai essayé le code équivalent dans une application Silverlight standard, et cela ne s'est pas produit là-bas. Je n'ai pas de téléphone physique pour reproduire cela pour le moment. Je n'ai trouvé aucune trace de ce problème connu dans le Windows Phone 7.
Quelqu'un peut-il expliquer ce que je fais mal ou dois-je signaler cela comme un bogue?
EDIT: Pour réduire la possibilité que cela se résume à deux contrôles de texte, j'ai essayé de supprimer TextBlock
complètement le et de changer la méthode TextBoxChanged pour simplement incrémenter counter
. J'ai ensuite exécuté l'émulateur, tapé 10 lettres, puis mis un point d'arrêt sur la counter++;
ligne (juste pour se débarrasser de toute possibilité que le fait de pénétrer dans le débogueur cause des problèmes) - et cela apparaît counter
comme 20.
EDIT: J'ai maintenant demandé dans le forum Windows Phone 7 ... nous verrons ce qui se passe.