Ich habe eine sehr einfache Test-App, um mit Windows Phone 7 herumzuspielen. Ich habe gerade ein TextBoxund ein TextBlockzur Standard-UI-Vorlage hinzugefügt . Der einzige benutzerdefinierte Code ist der folgende:
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";
}
}
Das TextBox.TextChangedEreignis ist TextBoxChangedin der XAML verkabelt :
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
Jedes Mal, wenn ich im Emulator eine Taste drücke (entweder die Bildschirmtastatur oder die physische, nachdem ich Pause gedrückt habe, um letztere zu aktivieren), wird der Zähler zweimal erhöht, wobei zwei Zeilen in der Emulator angezeigt werden TextBlock. Alles, was ich versucht habe, zeigt, dass das Ereignis wirklich zweimal ausgelöst wird, und ich habe keine Ahnung warum. Ich habe überprüft, dass es nur einmal abonniert wird. Wenn ich mich im MainPageKonstruktor abmelde , passiert überhaupt nichts (für den Textblock), wenn sich der Text ändert.
Ich habe den entsprechenden Code in einer regulären Silverlight-App ausprobiert und er ist dort nicht aufgetreten. Ich habe im Moment kein physisches Telefon, mit dem ich das reproduzieren kann. Ich habe keine Aufzeichnung darüber gefunden, dass dies ein bekanntes Problem in Windows Phone 7 ist.
Kann jemand erklären, was ich falsch mache, oder sollte ich dies als Fehler melden?
BEARBEITEN: Um die Wahrscheinlichkeit zu verringern, dass dies auf zwei TextBlockTextsteuerelemente zurückzuführen ist , habe ich versucht, das vollständig zu entfernen und die TextBoxChanged-Methode so zu ändern, dass sie nur inkrementiert wird counter. Ich habe dann den Emulator ausgeführt, 10 Buchstaben eingegeben und dann einen Haltepunkt in die counter++;Zeile gesetzt (nur um die Möglichkeit auszuschließen, dass das Einbrechen in den Debugger Probleme verursacht) - und es wird counter20 angezeigt.
EDIT: Ich habe jetzt im Windows Phone 7-Forum gefragt ... wir werden sehen, was passiert.
textBox1.Textals Teil des Zusatzes "textBlock1" anzeige, wird in beiden Zeilen "h" angezeigt .
TextChangedEventArgshat nicht wirklich viel zur Verfügung - nur die OriginalSource, die immer null ist.