我正在使用 Entity Framework 和 Caliburn.Micro 来实现 MVVM 应用程序。
基本上,我在一对多关系中设置了 AuthorModel 和 BookModel - 一个作者有多本书,而一本书只有一个作者。
我有一个 SelectBookWindow,我在其中使用 DbContext 加载 ObservableCollection<Book>
,从中选择一本我想查看/编辑的书。然后,我将所选书籍作为参数传递给 EditBookWindow,其中我有一个组合框,其中枚举了所有作者,但选择了当前作者。
在这里,我加载 ObservableCollection<Author>
使用不同的 DbContext 实例并将其设置为组合框的 ItemsSource
以及SelectedItem="{Binding Author}"
. ( Author
是 Book
的虚拟属性(property))
ComboBox 正确显示作者列表。但是,它似乎没有将图书的作者显示为其 SelectedItem。
这是因为我使用了不同的 DbContext 实例吗?如果是这样,我该如何纠正这个问题?
最佳答案
是的。因为 ItemsSource 中的作者引用了不同的对象,尽管内容与绑定(bind)到 SelectedItem 的对象相同。
我对 EF 了解不多,我想您可以对这两个实体使用相同的上下文。或者覆盖 Author 类的 equals(和 gethashcode)来比较内容,如果相同则返回 true。
关于c# - EF ComboBox 不显示 SelectedItem 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18808331/