Tenho um aplicativo de teste muito simples para brincar com o Windows Phone 7. Acabei de adicionar um TextBox
e um TextBlock
ao modelo de IU padrão. O único código personalizado é o seguinte:
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";
}
}
O TextBox.TextChanged
evento está conectado ao TextBoxChanged
XAML:
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
Porém, toda vez que pressiono uma tecla durante a execução do emulador (seja o teclado na tela ou o físico, tendo pressionado Pause para habilitar o último), ele incrementa o contador duas vezes, exibindo duas linhas no TextBlock
. Tudo o que experimentei mostra que o evento está realmente disparando duas vezes, e não tenho ideia do motivo. Eu verifiquei que ele só está sendo inscrito uma vez - se eu cancelar a inscrição no MainPage
construtor, nada acontece (ao bloco de texto) quando o texto muda.
Tentei o código equivalente em um aplicativo Silverlight regular e não ocorreu lá. Não tenho um telefone físico para reproduzir isso no momento. Não encontrei nenhum registro deste ser um problema conhecido no Windows Phone 7.
Alguém pode explicar o que estou fazendo de errado ou devo relatar isso como um bug?
EDIT: Para reduzir a possibilidade de isso ser reduzido a dois controles de texto, tentei remover o TextBlock
completamente e alterar o método TextBoxChanged para apenas incrementar counter
. Eu, em seguida, executar no emulador, digitado 10 letras e , em seguida, colocar um ponto de interrupção nacounter++;
linha (apenas para se livrar de qualquer possibilidade de invadir o depurador está causando problemas) - e mostra counter
como 20.
EDIT: Eu já perguntei no fórum do Windows Phone 7 ... vamos ver o que acontece.
textBox1.Text
como parte da adição textBlock1, ele mostrará "h" em ambas as linhas.
TextChangedEventArgs
não tem muito disponível - apenas o OriginalSource
, que é sempre nulo.