ฉันมีแอปทดสอบที่ง่ายมากเพื่อเล่นกับ Windows Phone 7 ฉันเพิ่งเพิ่ม a TextBox
และ a TextBlock
ลงในเทมเพลต UI มาตรฐาน โค้ดที่กำหนดเองมีดังต่อไปนี้:
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
แก้ไข: ตอนนี้ฉันถามในฟอรัม Windows Phone 7 ... เราจะดูว่าเกิดอะไรขึ้น