Ich habe eine sehr einfache Test-App, um mit Windows Phone 7 herumzuspielen. Ich habe gerade ein TextBox
und ein TextBlock
zur 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.TextChanged
Ereignis ist TextBoxChanged
in 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 MainPage
Konstruktor 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 TextBlock
Textsteuerelemente 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 counter
20 angezeigt.
EDIT: Ich habe jetzt im Windows Phone 7-Forum gefragt ... wir werden sehen, was passiert.
textBox1.Text
als Teil des Zusatzes "textBlock1" anzeige, wird in beiden Zeilen "h" angezeigt .
TextChangedEventArgs
hat nicht wirklich viel zur Verfügung - nur die OriginalSource
, die immer null ist.