データベースにLINQ-to-Entityモデルを使用しています。私はLINQを使用して問題なく、通常のバインディングを行うことができます。例:LINQ-To-Entityオブジェクトを使用してINotifyPropertyChangedを実装する方法
Easy!しかし、私の質問は、バインドするコントロールがデータソースが変更されたときに自動的に更新されるように、INotifyPropertyChangedを実装する方法です。
データベースにLINQ-to-Entityモデルを使用しています。私はLINQを使用して問題なく、通常のバインディングを行うことができます。例:LINQ-To-Entityオブジェクトを使用してINotifyPropertyChangedを実装する方法
Easy!しかし、私の質問は、バインドするコントロールがデータソースが変更されたときに自動的に更新されるように、INotifyPropertyChangedを実装する方法です。
あなたのコードでは、まず
:-)感覚の全体の多くを作成しません:myComboBox.ItemsSource = myCustomers
:
dim myItemSource = From c in myCustomers
Select c
これが必要とされていない広告はすべて、あなたがこれまでの最後の行を変更することができます。 myItemSource
の必要はありません。これをさらに簡略化してmyComboBox.ItemsSource = db.Customers.ToList
にすることができます。 myCustomers
も不要です。
第2:
お客様が変更すると、コンボボックスが更新されます。それでは、なぜあなたはdb.Customers
に直接バインドしていませんが、決して変更されない静的リストにバインドしていませんか? db.Customers.ToList
は、db.Customers
の内容のスナップショットを作成します。 db.Customers
が更新されると更新されません。
結論: あなたのコードは次のようになります。
Dim db As New myEntityModel
myComboBox.ItemsSource = db.Customers
こんにちは@Daniel Hilgarth。 DUH!コードの簡素化をありがとう!時には、複雑さを探すときに、最も簡単な解決策を見逃してしまいます。コードは今より良く見えますが、それでも動作しません。プログラムを実行すると、ComboBoxは顧客をうまく表示しますが、データベースのデータを変更すると、ComboBoxの顧客は変更されません。私は間違って何をしていますか? ** DisplayMemberPath = CustomerName **を** ** XAML **に使用しています** –
@ Jason:データベースまたはエンティティフレームワークで顧客を直接変更していますか?他の誰かがあなたのデータベースを変更すると、あなたのエンティティコンテキストは**自動的に更新されません**。それを再クエリーする必要があります。 –
こんにちは@Daniel Hilgarth。私は私の質問のように、フレームワークではなく、私のデータベースで直接変更しています。私は、データベースが変更されるたびに、自動的にComboBoxのアイテムソースを変更する必要があります。 –
あなたはEntity Frameworkの意味ですか?またはLinqからSql? POCOを使用しようとしましたか? –
Entity Framework - LINQ to Entitiesを使用しています。私はPOCOが何であるかはわかりませんが、私はこの問題を徹底的に調査しています。 –