TextBoxのTextがtwowayモードを使用するプロパティにデータバインドされていて、Textを何かに設定すると、プロパティが更新されるはずです。私のプロパティは、コントロールの中に入力すると更新されますが、コードの値を設定すると更新されません。textBox.Textを設定するとバインドされたtwowayプロパティは更新されませんか?
答えて
バインドされたTextプロパティを直接変更することは意味がありません。コードでは、バインディングのもう一方の端を設定し、バインドでコントロールを更新できるようにする必要があります。
Textプロパティが設定されているときにバインドされたオブジェクトが更新された場合、他の理由でバインドされたオブジェクトの結果がそのような代理人になったときを検出する特別なケースコードが必要になります。さもなければ、無限ループに終わるでしょう。
質問は私がプログラムでデータバインディングを追加/削除するときにやっている作業から来ています。私は、コード内でバインディングを設定するたびに、バインディングするプロパティとテキストボックスを空の文字列に設定することを確認しています。もう一度データバインドを設定すると、テキストボックス内のテキストをプロパティに設定し、その逆の設定はしません。なぜ私は最初にデータバインディングを削除するのですか?このプロパティは絶えず更新されているので、テキストボックスにフォーカスがあるときにそのテキストを変更する必要はありません。 – djcouchycouch
おそらく、質問そのものに多少のコードを入れて、これらの詳細を含めるべきでしょう。 – AnthonyWJones
これは、テキストボックスのフォーカスが失われたときにのみデータをコミットするためです。 Hereはこれには関係のない質問です。
テキストボックスの.Text値を設定しないでください。バインディングするプロパティの値を設定してください。 :)
ビューをデザインするためのModel-View-ViewModelメソッドの詳細をお読みください。この種の作業を行う際には、懸念が明確に分離されています。バインドをリフレッシュさせるフォーカスに関してこの「バグ」が表示されている理由は、ほとんどの場合、この種のものが適切でないためです。ここで
はMVVMにかなり良いビデオ紹介です:MVVM on Channel 9
あなたは私たちいくつかのコードを示しすることはできますか? –