1

私は、EF7を介してSQLiteデータベースにバインドされたデータのリストビューをユーザーに提示する簡単なWindows 10 UWPアプリケーションを作成しました。私は、ユニバーサルWindowsプラットフォームサイト上のMicrosoft Getting Startedから開始コードをたくさん取り出しました。 EF7(EFコア)を使用したUWPデータバインディング

結合

は、次のようにViewModelにで行われます。

using (var db = new ArtistContext()) 
{ 
    lstArtists.ItemsSource = db.Artists.ToList(); 
} 

これは、データベーステーブルを表示するため正常に動作します。

次に、ユーザーがデータベーステーブルにレコードを追加できるようにする2番目のページ(最初はモーダルダイアログとして表示されます)があります。これは正常に動作し、レコードがデータベースに追加されているのがわかります。

ただし、ユーザーがダイアログを閉じると、元のビューを更新してデータベースの変更を表示することができません。 WPF開発から、ListViewのデータバインディングは、実際にはテーブルのToList()ではなくObservableCollectionにあるべきことがわかります。しかし、データ・コンテキストから来るDBSetをObservableCollectionに変換する方法と、新しいレコードが2番目のレコードを介してデータベースに追加されたときにそのコレクションへの変更がUIに確実に通知されるようにする方法について完全な空白を描いています表示します。

どこかにサンプル実装がありますか、誰かが正しい方向に私を向けるための基礎を提供することができますか?

+0

をリストビューのthte ItemsSourceプロパティをバインドする必要があることを忘れないでください! – SeeuD1

答えて

1

まず、lstArtists型ObservableCollectionを作成します。ここで、Tはモデルです。

データベースを変更するときはいつでも、グローバルスコープイベントを発生させる必要がありますが、多くの方法がありますが、MVVM LightのMessengerを使用します。イベントハンドラでは、lstArtistsに変更してデータベースと同期させます。

あなたのXAMLバインディングコードを投稿することができますが、パブリックプロパティ名にlstArtists

+0

ありがとう、私はMVVM Light Messengerについて完全に忘れてしまった。それをソリューションに追加したところ、すべてうまくいきました。 –

関連する問題