У меня очень простое тестовое приложение, просто чтобы поиграть с Windows Phone 7. Я только что добавил 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" />
Однако каждый раз, когда я нажимаю клавишу при запуске в эмуляторе (либо экранная клавиатура, либо физическая, нажав кнопку "Пауза" для включения последней), он дважды увеличивает счетчик, отображая две строки в TextBlock
, Все, что я пробовал, показывает, что событие действительно срабатывает дважды, и я не знаю, почему. Я проверял, что он только подписывается один раз - если я отписываюсь в конструкторе MainPage
, при изменении текста ничего не происходит (в текстовом блоке).
Я пробовал эквивалентный код в обычном приложении Silverlight, и его там не было. На данный момент у меня нет физического телефона, чтобы воспроизвести это. Я не нашел записи о том, что это известная проблема в Windows Phone 7.
Может ли кто-нибудь объяснить, что я делаю неправильно, или сообщить об этом как об ошибке?
РЕДАКТИРОВАТЬ. Чтобы уменьшить вероятность того, что у вас есть два элемента управления текстом, я попытался полностью удалить TextBlock
и изменить метод TextBoxChanged, чтобы просто увеличить counter
. Затем я запустил эмулятор, набрал 10 букв, а затем положил точку останова на строку counter++;
(просто чтобы избавиться от любой возможности взлома в отладчик вызывает проблемы) - и он показывает counter
как 20.
EDIT: Я сейчас спросил на форуме Windows Phone 7... мы увидим, что произойдет.