我有一个非常简单的测试应用程序,只是玩玩 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
事件在 XAML 中连接到 TextBoxChanged
:
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
然而,每次我在模拟器中运行时按下一个键(屏幕上的键盘或物理键盘,按下暂停以启用后者) ,计数器就会增加两次,在 TextBlock
中显示两行。我试过的所有方法都表明这个事件真的发生了两次,我不知道为什么。我已经验证了它只被订阅一次——如果我在 MainPage
构造函数中取消订阅,当文本更改时什么都不会发生(对于文本块)。
我已经在一个常规的 Silverlight 应用程序中尝试了相同的代码,但是没有出现这种情况。我现在没有实体手机来重现这一切。我没有发现任何记录,这是一个已知的问题在 Windows Phone 7。
有人能解释一下我做错了什么吗,或者我应该把这个当作一个错误来报告?
编辑: 为了减少使用两个文本控件的可能性,我尝试完全删除 TextBlock
,并将 TextBoxChanged 方法更改为 只是递增 counter
。然后我在模拟器中运行,键入10个字母,那么在 counter++;
行上放置一个断点(只是为了排除破坏调试器导致问题的任何可能性)——它将 counter
显示为20。
编辑: 我现在已经 在 Windows Phone 7论坛上问道... 我们将看到会发生什么。