У меня очень простое тестовое приложение, чтобы поиграться с 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.
РЕДАКТИРОВАТЬ: Я сейчас спросил на форуме Windows Phone 7 ... посмотрим, что произойдет.