1

我编写了一个简单的 Windows 10 UWP 应用程序,该应用程序向用户显示通过 EF7 绑定到 SQLite 数据库的数据的 ListView。我从 Microsoft 通用 Windows 平台入门网站中获取了很多起始代码。

绑定在 ViewModel 中完成,如下所示:

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

这适用于显示数据库表。

然后我有第二个页面(在第一个页面上显示为模式对话框),它允许用户将记录添加到数据库表中。这工作正常,我可以看到记录已添加到数据库中。

但是,一旦用户关闭对话框,我就无法更新原始视图以显示数据库中的更改。我从 WPF 开发中知道,ListView 的数据绑定实际上应该是 ObservableCollection 而不是表中的 ToList()。但是,我对如何将来自数据上下文的 DBSet 转换为 ObservableCollection 以及如何确保在通过第二个将新记录添加到数据库时通知 UI 对该集合的更改完全空白看法。

某处是否有示例实现,或者有人可以提供基础知识来为我指明正确的方向吗?

4

1 回答 1

1

首先,创建lstArtists类型 ObservableCollection,其中 T 是您的模型。

每当您对数据库进行更改时,您都必须触发一个全局范围事件,有很多方法,但我使用来自 MVVM Light 的 Messenger。在事件处理程序中,您对 进行更改以lstArtists使其与数据库同步。

请记住,您必须将ItemsSourceListView 的属性绑定到公共属性名称lstArtists

于 2016-04-14T08:23:21.673 回答