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