文字列依存関係プロパティを TextBox の Text に双方向バインディングしています。
バインディングは次のようになります。
Text="{Binding MyValue, Mode=TwoWay}"
を設定する OnKeyUp (添付プロパティ) で起動するコードがいくつかありますMyValue
。しかし、私の値を取得して Text プロパティに適用するのではなく、逆の方向に進んでいます。
イベントのシーケンスは次のとおりです。
- ユーザーは次のようなテキスト文字列を入力します: 0299900650
- ユーザーが Enter キーを押します。
- キーアップで、MyValue を 2999 に設定し、次のフィールドにフォーカスを移動します。
- MyValue のセッターが起動し、2999 で NotifiyPropertyChanged を実行します
- LostFocus が起動します。
- MyValue のセッターが起動し、0299900650 で NotifiyPropertyChanged を実行します。
私の価値はどういうわけか「TextBox.Text」に戻っていないようです。フォーカスを失うと、TextBox は文字列の値を Text プロパティの内容で更新しています (変更が戻されなかったため、値は変更されていません)。
ここで気付いていない WPF マジックはありますか?
注: バインディングを再確認しました。(加えて、それらは UI から動作するので、UI に行くのは正しいと思います。)
注 II: 「ユーザーが文字列を入力する」と言うとき、それは実際にはスキャンされたバーコードです。しかし、私はキーボード ウェッジを使用しているので、入力されたかのように表示されます。
更新: これは、別のプロパティに副作用があることが原因であることがわかりました。問題を解決できました。