Visual Studio2012Ultimateで.NET4.5を使用してWindows8アプリを開発しました。
私が抱えている問題は、コード内のTextBoxのテキスト値を指定できる場合、OnChangedイベントが発生し、予測できない方法のように見え、OnChangedイベントハンドラーのコードが発生したくないときに発生することです。
例えば
OnChangedイベントハンドラーに、ユーザーがTextBox内のテキストを変更したときに、アプリのステータスを「編集中..」に更新するコードがある場合があります。ただし、コード内のテキストを自分で変更した場合にステータスを変更したくありません。
そこで、OnChangedイベントのコードを実行できるかどうかを制御する「Updating」というグローバル変数を作成しました。
updateをtrueに設定してから、textbox textプロパティをある値に設定し、Updateing変数をfalseに設定します。問題は、Updateing変数をfalseに設定した後、TextBoxのOnChangedイベントが発生しているように見えるため、イベントハンドラーのコードが発生することです。
これは、Win8アプリの非同期性と関係があると思います。
この問題を解決する方法を知っている人はいますか?この動作に関するいくつかの背景情報も役立ちます。