我有一个非常简单的测试应用程序,可以与Windows Phone 7一起使用。我刚刚在标准UI模板中添加了TextBox
和TextBlock
。唯一的自定义代码如下:
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";
}
}
该TextBox.TextChanged
事件连接到TextBoxChanged
XAML中:
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
但是,每当我在仿真器中运行时按一次键(屏幕键盘或物理键盘,都已按Pause键以启用后者),它将使计数器递增两次,并在中显示两行TextBlock
。我尝试过的一切都表明该事件确实触发了两次,我也不知道为什么。我已经验证它仅被订阅一次-如果我在MainPage
构造函数中取消订阅,则在文本更改时(文本块)完全没有任何反应。
我已经在常规的Silverlight应用程序中尝试了等效的代码,但并没有在其中发生。我目前没有可重现此功能的实体电话。我尚未在Windows Phone 7中找到任何已知问题的记录。
谁能解释我在做什么错,还是应该将其报告为错误?
编辑:为了减少这种被降低到具有两个文本控件的可能性,我已经试图消除TextBlock
完全,并改变TextBoxChanged方法只是增量counter
。然后,我在仿真器中运行,键入10个字母,然后在该counter++;
行上放置一个断点(只是为了消除闯入调试器会引起问题的任何可能性),它显示counter
为20。
编辑:我现在已经在Windows Phone 7论坛中问了 ……我们将看看会发生什么。
textBox1.Text
为textBlock1添加的一部分,它将在两行中显示“ h”。
TextChangedEventArgs
实际上并没有太多可用-只是OriginalSource
,始终为null。