Tôi có một ứng dụng thử nghiệm rất đơn giản chỉ để chơi với Windows Phone 7. Tôi vừa thêm a TextBox
và a TextBlock
vào mẫu giao diện người dùng chuẩn. Mã tùy chỉnh duy nhất như sau:
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";
}
}
Sự TextBox.TextChanged
kiện được kết nối với TextBoxChanged
XAML:
<TextBox Height="72" HorizontalAlignment="Left" Margin="6,37,0,0"
Name="textBox1" Text="" VerticalAlignment="Top"
Width="460" TextChanged="TextBoxChanged" />
Tuy nhiên, mỗi khi tôi nhấn một phím khi chạy trong trình giả lập (bàn phím ảo hoặc bàn phím vật lý, đã nhấn Tạm dừng để bật phím sau), nó sẽ tăng bộ đếm hai lần, hiển thị hai dòng trong TextBlock
. Mọi thứ tôi đã thử cho thấy rằng sự kiện đang thực sự diễn ra hai lần và tôi không biết tại sao. Tôi đã xác minh rằng nó chỉ được đăng ký một lần - nếu tôi hủy đăng ký trong phương thức MainPage
khởi tạo, không có gì xảy ra cả (với khối văn bản) khi văn bản thay đổi.
Tôi đã thử mã tương đương trong ứng dụng Silverlight thông thường và nó không xảy ra ở đó. Tôi không có điện thoại thực để tái tạo điều này vào lúc này. Tôi không tìm thấy bất kỳ bản ghi nào cho thấy đây là sự cố đã biết trong Windows Phone 7.
Bất cứ ai có thể giải thích những gì tôi đang làm sai, hoặc tôi nên báo cáo điều này là một lỗi?
CHỈNH SỬA: Để giảm khả năng điều này xuống có hai điều khiển văn bản, tôi đã thử loại bỏ TextBlock
hoàn toàn và thay đổi phương thức TextBoxChanged thành chỉ tăng dần counter
. Sau đó, tôi chạy trong trình giả lập, nhập 10 chữ cái và sau đó đặt một điểm ngắt trên counter++;
dòng (chỉ để loại bỏ bất kỳ khả năng nào xâm nhập vào trình gỡ lỗi gây ra sự cố) - và nó cho thấycounter
là 20.
CHỈNH SỬA: Bây giờ tôi đã hỏi trong diễn đàn Windows Phone 7 ... chúng ta sẽ xem điều gì sẽ xảy ra.