У меня есть очень простое тестовое приложение, чтобы поиграть с Windows Phone 7. Я только что добавил a TextBox
и a 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.
Может ли кто-нибудь объяснить, что я делаю не так, или мне следует сообщить об этом как об ошибке?
EDIT: чтобы уменьшить вероятность того, что это TextBlock
связано с двумя текстовыми элементами управления, я попытался полностью удалить и изменить метод TextBoxChanged на просто увеличение counter
. Затем я запустил эмулятор, набрал 10 букв, а затем поставил точку останова на counter++;
строке (просто чтобы избавиться от любой возможности того, что взлом отладчика вызывает проблемы) - и отображается counter
как 20.
EDIT: я спросил на форуме Windows Phone 7 ... посмотрим, что произойдет.