2011-07-25 9 views
0

データベースにLINQ-to-Entityモデルを使用しています。私はLINQを使用して問題なく、通常のバインディングを行うことができます。例:LINQ-To-Entityオブジェクトを使用してINotifyPropertyChangedを実装する方法

Easy!しかし、私の質問は、バインドするコントロールがデータソースが変更されたときに自動的に更新されるように、INotifyPropertyChangedを実装する方法です。

+0

あなたはEntity Frameworkの意味ですか?またはLinqからSql? POCOを使用しようとしましたか? –

+0

Entity Framework - LINQ to Entitiesを使用しています。私はPOCOが何であるかはわかりませんが、私はこの問題を徹底的に調査しています。 –

答えて

0

あなたのコードでは、まず

:-)感覚の全体の多くを作成しません: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 
+0

こんにちは@Daniel Hilgarth。 DUH!コードの簡素化をありがとう!時には、複雑さを探すときに、最も簡単な解決策を見逃してしまいます。コードは今より良く見えますが、それでも動作しません。プログラムを実行すると、ComboBoxは顧客をうまく表示しますが、データベースのデータを変更すると、ComboBoxの顧客は変更されません。私は間違って何をしていますか? ** DisplayMemberPath = CustomerName **を** ** XAML **に使用しています** –

+0

@ Jason:データベースまたはエンティティフレームワークで顧客を直接変更していますか?他の誰かがあなたのデータベースを変更すると、あなたのエンティティコンテキストは**自動的に更新されません**。それを再クエリーする必要があります。 –

+0

こんにちは@Daniel Hilgarth。私は私の質問のように、フレームワークではなく、私のデータベースで直接変更しています。私は、データベースが変更されるたびに、自動的にComboBoxのアイテムソースを変更する必要があります。 –

関連する問題