c# - EF ComboBox 不显示 SelectedItem 绑定(bind)

标签 c# wpf entity-framework mvvm caliburn.micro

我正在使用 Entity Framework 和 Caliburn.Micro 来实现 MVVM 应用程序。

基本上,我在一对多关系中设置了 AuthorModel 和 BookModel - 一个作者有多本书,而一本书只有一个作者。

我有一个 SelectBookWindow,我在其中使用 DbContext 加载 ObservableCollection<Book> ,从中选择一本我想查看/编辑的书。然后,我将所选书籍作为参数传递给 EditBookWindow,其中我有一个组合框,其中枚举了所有作者,但选择了当前作者。

在这里,我加载 ObservableCollection<Author>使用不同的 DbContext 实例并将其设置为组合框的 ItemsSource以及SelectedItem="{Binding Author}" . ( AuthorBook 的虚拟属性(property))

ComboBox 正确显示作者列表。但是,它似乎没有将图书的作者显示为其 SelectedItem。

这是因为我使用了不同的 DbContext 实例吗?如果是这样,我该如何纠正这个问题?

最佳答案

是的。因为 ItemsSource 中的作者引用了不同的对象,尽管内容与绑定(bind)到 SelectedItem 的对象相同。

我对 EF 了解不多,我想您可以对这两个实体使用相同的上下文。或者覆盖 Author 类的 equals(和 gethashcode)来比较内容,如果相同则返回 true。

关于c# - EF ComboBox 不显示 SelectedItem 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18808331/

相关文章:

c# - 列出排列(未知数)

c# - 使用 mvc 在 azure 表中设置 etw 日志

c# - 在此上下文中仅支持原始类型或枚举类型

c# - 如何刷新 DbContext

c# - ML.NET 无法在 uwp 上运行

c# - Umbraco 实例中的 MVC 路由

c# - 在 Web 应用程序中使用 WPF 在内存中创建 3D 视觉对象。适用于 Cassini,不适用于 IIS

c# - 从 WPF Windows 应用程序到实际控制台的输出 Console.WriteLine

wpf - 从 WinForms 迁移到 WPF

c# - 为什么 Linq 更快