Sadece Windows Phone 7 ile oynamak için çok basit bir test uygulamam var . Standart kullanıcı arayüzü şablonuna bir TextBox
ve a ekledim TextBlock
. Tek özel kod şudur:
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
Olay kadar kablolu TextBoxChanged
XAML:
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
Bununla birlikte, öykünücüde çalışırken bir tuşa her bastığımda (ekran klavyesi veya fiziksel olanı, ikincisini etkinleştirmek için Duraklat'a bastıktan sonra), sayacı iki kez artırarak TextBlock
. Denediğim her şey, olayın gerçekten iki kez ateşlendiğini gösteriyor ve neden olduğuna dair hiçbir fikrim yok. Sadece bir kez abone olduğunu doğruladım - kurucuda aboneliği iptal edersem MainPage
, metin değiştiğinde hiçbir şey olmuyor (metin bloğuna).
Eşdeğer kodu normal bir Silverlight uygulamasında denedim ve orada olmadı. Şu anda bunu yeniden üretecek fiziksel bir telefonum yok. Windows Phone 7'de bunun bilinen bir sorun olduğuna dair herhangi bir kayıt bulamadım.
Neyi yanlış yaptığımı kimse açıklayabilir mi, yoksa bunu bir hata olarak bildirmeli miyim?
DÜZENLEME: Bunun iki metin kontrolüne sahip olma olasılığını azaltmak için, TextBlock
tamamen kaldırmayı ve TextBoxChanged yöntemini sadece artış olarak değiştirmeyi denedim counter
. Daha sonra öykünücüyü çalıştırdım, 10 harf yazdım ve sonracounter++;
satıra bir kesme noktası koydum (sadece hata ayıklayıcıya girmenin sorunlara neden olma olasılığından kurtulmak için) - ve counter
20 olarak gösteriyor .
DÜZENLEME: Şimdi Windows Phone 7 forumunda sordum ... ne olacağını göreceğiz.