Tengo una aplicación de prueba muy simple para jugar con Windows Phone 7. Acabo de agregar un TextBox
y un TextBlock
a la plantilla de interfaz de usuario estándar. El único código personalizado es el siguiente:
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";
}
}
El TextBox.TextChanged
evento está conectado a TextBoxChanged
XAML:
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
Sin embargo, cada vez que presiono una tecla cuando se ejecuta en el emulador (ya sea el teclado en pantalla o el físico, después de presionar Pausa para habilitar este último), aumenta el contador dos veces, mostrando dos líneas en el TextBlock
. Todo lo que he intentado muestra que el evento realmente se está disparando dos veces y no tengo idea de por qué. He verificado que solo se suscribe una vez: si me doy de baja en el MainPage
constructor, no pasa nada (en el bloque de texto) cuando el texto cambia.
Probé el código equivalente en una aplicación Silverlight normal y no ocurrió allí. No tengo un teléfono físico para reproducir esto en este momento. No he encontrado ningún registro de que esto sea un problema conocido en Windows Phone 7.
¿Alguien puede explicar qué estoy haciendo mal, o debería informar de esto como un error?
EDITAR: Para reducir la posibilidad de que esto se deba a tener dos controles de texto, he intentado eliminar por TextBlock
completo y cambiar el método TextBoxChanged para solo incrementar counter
. Luego ejecuté el emulador, escribí 10 letras y luego puse un punto de interrupción en la counter++;
línea (solo para deshacerme de cualquier posibilidad de que irrumpir en el depurador esté causando problemas), y se muestra counter
como 20.
EDITAR: Ahora he preguntado en el foro de Windows Phone 7 ... veremos qué sucede.