【问题标题】:UWP Data Binding with EF7 (EF Core)UWP 数据绑定与 EF7 (EF Core)
【发布时间】:2016-04-14 03:07:55
【问题描述】:

我编写了一个简单的 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 对该集合的更改完全空白查看。

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

【问题讨论】:

  • 你能发布你的xaml绑定代码吗?

标签: c# entity-framework data-binding win-universal-app uwp-xaml


【解决方案1】:

首先,让lstArtists 键入 ObservableCollection,其中 T 是您的模型。

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

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

【讨论】:

  • 谢谢,我完全忘记了 MVVM Light Messenger。已将其添加到解决方案中,现在一切正常。
猜你喜欢
  • 1970-01-01
  • 2023-03-04
  • 2018-04-13
  • 2019-05-13
  • 2020-07-04
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多