1

次のような WPF CombBox があります。

<ComboBox 
   ItemsSource="{Binding Source={StaticResource myList}}"
   SelectedItem="{Binding Path=mySelectedItem}"
/>

私が抱えている問題は、バインドされた値が変更されたときに、コンボボックスのテキストボックスで選択された値が更新されないことです。(注 - コンボボックス リストの値は更新されます)。

私はMVVMを使用しているので、バインディングが変更されたときにビューモデルで検出でき、プロパティ変更イベントを呼び出すことができます。これはコンボボックスを更新しますが、テキストボックス内に表示される値は更新しません。

これはコンボボックスのテンプレートで実行できると思います-テキストボックスをコンボボックスの選択されたアイテムにバインドするか、更新時に常に更新しますか?

編集:

明確にしませんでした-INotifyPropertyChangedを適切に実装し、値が変更されたときにmyListとmySelectedItemのPropertyChangedを発生させます。問題は、コンボ ボックス内のテキスト ボックスが更新されないことです。

同様の質問を見つけました:

WPF ComboBox SelectedItemが更新されていません

これは答えのヒントを与えますが、残念ながら十分ではありません。

4

3 に答える 3

0

ほとんどのmySelectedItem場合、依存関係プロパティではありません。あるいは、含まれているクラスが を実装していませんINotifyPropertyChanged

値が依存関係プロパティでも のプロパティでもない場合を考えてみましょうINotifyPropertyChanged。この場合、WPF はその値が変更されたことを知る機会がないため、値は最初に (リフレクションを使用して) 1 回だけ読み込まれます。

依存関係プロパティの場合、またはそれを含むオブジェクトが をサポートしているINotifyPropertyChanged場合、WPF フレームワークは値の変更をサブスクライブして、コンボボックスを更新できます。

于 2010-03-18T00:01:12.383 に答える
0

ここであなたへの回答を更新しました

それが役に立てば幸い!!

于 2010-03-19T05:05:03.677 に答える
0

「myList」コレクションの背後にある値が変更されたときに選択したアイテムが変更されることを期待している場合は、そうではありません。MVVM を使用していて、ビュー モデルに INotifyPropertyChanged を実装している場合。次に、myList の PropertyChanged を発生させるときに、何らかの方法で再バインドまたは変更することが予想される場合は、'mySelectedItem' に対しても発生させる必要があります。

于 2010-03-18T00:15:58.967 に答える