Mam bardzo prostą aplikację testową do zabawy z Windows Phone 7. Właśnie dodałem a TextBox
i a TextBlock
do standardowego szablonu UI. Jedyny kod niestandardowy jest następujący:
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
Wydarzenie jest podłączony do TextBoxChanged
w XAML:
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
Jednak za każdym razem, gdy naciskam klawisz podczas pracy w emulatorze (na klawiaturze ekranowej lub fizycznej, po naciśnięciu Pause, aby włączyć tę drugą), dwukrotnie zwiększa licznik, wyświetlając dwie linie w TextBlock
. Wszystko, czego próbowałem, pokazuje, że zdarzenie jest autentycznie odpalane dwukrotnie i nie mam pojęcia, dlaczego. Sprawdziłem, że jest subskrybowany tylko raz - jeśli wypiszę się w MainPage
konstruktorze, nic się nie dzieje (do bloku tekstowego), gdy tekst się zmienia.
Wypróbowałem równoważny kod w zwykłej aplikacji Silverlight i tam go nie było. W tej chwili nie mam fizycznego telefonu, z którego mógłbym to odtworzyć. Nie znalazłem żadnego zapisu, że jest to znany problem w Windows Phone 7.
Czy ktoś może wyjaśnić, co robię źle, czy powinienem zgłosić to jako błąd?
EDYCJA: Aby zredukować możliwość sprowadzenia tego do dwóch kontrolek tekstu, próbowałem TextBlock
całkowicie usunąć i zmienić metodę TextBoxChanged, aby po prostu zwiększyć counter
. Następnie uruchomiłem emulator, wpisałem 10 liter, a następnie umieściłem punkt przerwania w counter++;
linii (tylko po to, aby pozbyć się jakiejkolwiek możliwości, że włamanie do debugera powoduje problemy) - i pokazuje się counter
jako 20.
EDYCJA: Zapytałem teraz na forum Windows Phone 7 ... zobaczymy, co się stanie.