C# 与EF7(EF核心)的UWP数据绑定

C# 与EF7(EF核心)的UWP数据绑定,c#,entity-framework,data-binding,win-universal-app,uwp-xaml,C#,Entity Framework,Data Binding,Win Universal App,Uwp Xaml,我已经编写了一个简单的windows10uwp应用程序,它通过EF7向用户提供绑定到SQLite数据库的数据列表视图。我从微软的通用Windows平台入门网站上获取了很多启动代码 绑定在ViewModel中完成,如下所示: using (var db = new ArtistContext()) { lstArtists.ItemsSource = db.Artists.ToList(); } 这对于显示数据库表非常有效 然后我有了第二个页面(在第一个页面上显示为模式对话框),它允许用

我已经编写了一个简单的windows10uwp应用程序,它通过EF7向用户提供绑定到SQLite数据库的数据列表视图。我从微软的通用Windows平台入门网站上获取了很多启动代码

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

using (var db = new ArtistContext())
{
    lstArtists.ItemsSource = db.Artists.ToList();
}
这对于显示数据库表非常有效

然后我有了第二个页面(在第一个页面上显示为模式对话框),它允许用户向数据库表中添加记录。这很好,我可以看到记录被添加到数据库中

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


是否有某个地方有一个示例实现,或者有人能提供一些基础知识来为我指明正确的方向吗?

首先,制作
lstarts
键入ObservableCollection,其中T是您的模型

无论何时更改数据库,都必须触发全局范围事件,有很多方法,但我使用MVVM Light中的Messenger。在事件处理程序中,您对
lstarts
进行更改,使其与数据库同步


请记住,您必须将ListView的
ItemsSource
属性绑定到公共属性名
LSTARTS

您可以发布xaml绑定代码吗?谢谢,我已经完全忘记了MVVM Light Messenger。我们已将其添加到解决方案中,现在一切正常。