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" />
ただし、エミュレーターで実行中にキーを押すたびに(画面キーボードまたは物理キーボードのいずれかで、一時停止を押して後者を有効にします)、カウンターを2回インクリメントし、に2行を表示しTextBlock
ます。私が試したすべては、イベントが本当に2回発生していることを示しており、その理由はわかりません。一度だけサブスクライブされていることを確認しました。MainPage
コンストラクターでサブスクライブを解除した場合、テキストが変更されても(テキストブロックに対して)何も起こりません。
通常のSilverlightアプリで同等のコードを試しましたが、そこでは発生しませんでした。現在、これを再現するための物理的な電話はありません。これがWindows Phone 7の既知の問題であるという記録は見つかりませんでした。
誰かが私が間違っていることを説明できますか、それともバグとして報告する必要がありますか?
EDITは:2つのテキストコントロールを持つには、このダウンしている可能性を減らすために、私は削除しようとしたTextBlock
、完全に、とまでTextBoxChanged方法を変えるだけインクリメントcounter
。次に、エミュレータで実行し、10文字を入力して、にブレークポイントを置きますcounter++;
(単にデバッガに侵入すると、問題を引き起こしていることをあらゆる可能性を取り除くために)ライン-そしてそれは示してcounter
20通り。
編集:私は今、Windows Phone 7フォーラムで質問しました ...何が起こるかを確認します。