I have a very simple test app just to play around with Windows Phone 7. I've just added a TextBox
and a TextBlock
to the standard UI template. The only custom code is the following:
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";
}
}
The TextBox.TextChanged
event is wired up to TextBoxChanged
in the XAML:
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
However, every time I press a key when running in the emulator (either the on-screen keyboard or the physical one, having pressed Pause to enable the latter) it increments the counter twice, displaying two lines in the TextBlock
. Everything I've tried shows that the event is genuinely firing twice, and I've no idea why. I've verified that it's only being subscribed once - if I unsubscribe in the MainPage
constructor, nothing happens at all (to the text block) when the text changes.
I've tried the equivalent code in a regular Silverlight app, and it didn't occur there. I don't have a physical phone to reproduce this with at the moment. I haven't found any record of this being a known problem in the Windows Phone 7.
Can anyone explain what I'm doing wrong, or should I report this as a bug?
EDIT: To reduce the possibility of this being down to having two text controls, I've tried removing the TextBlock
completely, and changing the TextBoxChanged method to just increment counter
. I've then run in the emulator, typed 10 letters and then put a breakpoint on the counter++;
line (just to get rid of any possibility that breaking into the debugger is causing issues) - and it shows counter
as 20.
EDIT: I've now asked in the Windows Phone 7 forum... we'll see what happens.