Ho un'app di test molto semplice solo per giocare con Windows Phone 7. Ho appena aggiunto un TextBox
e un TextBlock
al modello di interfaccia utente standard. L'unico codice personalizzato è il seguente:
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
evento è cablato TextBoxChanged
nel XAML:
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
Tuttavia, ogni volta che premo un tasto durante l'esecuzione nell'emulatore (sia la tastiera su schermo che quella fisica, avendo premuto Pausa per abilitare quest'ultima) incrementa il contatore due volte, visualizzando due righe nel file TextBlock
. Tutto quello che ho provato mostra che l'evento si sta realmente verificando due volte, e non ho idea del perché. Ho verificato che viene sottoscritto solo una volta: se annullo l'iscrizione nel MainPage
costruttore, non accade nulla (al blocco di testo) quando il testo cambia.
Ho provato il codice equivalente in una normale app Silverlight e non si è verificato lì. Al momento non ho un telefono fisico con cui riprodurlo. Non ho trovato alcuna traccia di questo problema noto in Windows Phone 7.
Qualcuno può spiegare cosa sto facendo di sbagliato o devo segnalarlo come un bug?
EDIT: Per ridurre la possibilità di questo essere giù ad avere due controlli di testo, ho cercato di rimuovere il TextBlock
tutto, e cambiando il metodo TextBoxChanged al solo incremento counter
. Ho quindi eseguito l'emulatore, ho digitato 10 lettere e quindi ho inserito un punto di interruzione sulla counter++;
riga (solo per eliminare qualsiasi possibilità che l' interruzione del debugger stia causando problemi) - e viene visualizzato counter
come 20.
EDIT: ora l'ho chiesto nel forum di Windows Phone 7 ... vedremo cosa succede.