Windows Phone 7을 사용하기위한 매우 간단한 테스트 앱이 있습니다 . 표준 UI 템플릿 에 a TextBox
및 a TextBlock
를 추가했습니다 . 유일한 사용자 지정 코드는 다음과 같습니다.
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" />
그러나 에뮬레이터에서 실행할 때 키를 누를 때마다 (화면 키보드 또는 물리적 키보드, Pause를 눌러 후자를 활성화) 카운터가 두 번 증가하여 TextBlock
. 내가 시도한 모든 것은 이벤트가 실제로 두 번 실행되고 있음을 보여 주며 이유를 모르겠습니다. 한 번만 구독된다는 것을 확인했습니다. MainPage
생성자 에서 구독을 취소 하면 텍스트가 변경 될 때 아무 일도 일어나지 않습니다 (텍스트 블록에).
일반 Silverlight 앱에서 동등한 코드를 시도했지만 거기에서 발생하지 않았습니다. 나는 현재 이것을 재현 할 실제 전화가 없습니다. Windows Phone 7에서 이것이 알려진 문제라는 기록을 찾지 못했습니다.
누구든지 내가 뭘 잘못하고 있는지 설명 할 수 있습니까? 아니면 버그로보고해야합니까?
편집 : 이것이 두 개의 텍스트 컨트롤을 가질 가능성을 줄이기 위해 TextBlock
완전히 제거 하고 TextBoxChanged 메서드를 단순히 증가 하도록 변경했습니다 counter
. 그런 다음 에뮬레이터에서 실행하고 10 개의 문자를 입력 한 다음counter++;
줄에 중단 점 을 두었습니다 (디버거에 침입하여 문제를 일으킬 가능성을 제거하기 위해) counter
-20으로 표시 됩니다.
편집 : 이제 Windows Phone 7 포럼에서 질문했습니다 .