我想使用EF Core连接到Sqlite数据库,并遵循本教程(https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite)。
一切正常(包括插入/删除/更新等)。
有一个DbContext
:
public Database.ProductDbContext PDC = new Database.ProductDbContext();
我也想将dbset
PDC.StoreIn
绑定到ItemsControl
。
我尝试像这样绑定它,但是根本不起作用:
报告错误:
System.Windows.Data Error: 40 : BindingExpression path error: 'PDC+StoreIn' property not found on 'object' ''SelectProduct' (Name='')'. BindingExpression:Path=PDC+StoreIn; DataItem='SelectProduct' (Name=''); target element is 'CollectionViewSource' (HashCode=8674443); target property is 'Source' (type 'Object')
但是,如果我将其转换为ObservableCollection
并绑定它,它就可以工作。就是这样:
public ObservableCollection OC = new ObservableCollection<Database.StoreIn>(PDC.StoreIn);
<ItemsControl ItemsSource="{Binding OC">
</ItemsControl>
据我们所知,每当数据库插入/更新/删除时,ObservableCollection
都不会更新,因此我必须直接绑定数据库。
如何绑定dbset
?谢谢。
================================================ =====
最后,我发现另一种解决方案更容易,但找不到重复的解决方案。
public ObservableCollection<Database.StoreIn> OC
{
get {
return new ObservableCollection<Database.StoreIn>(PDC.StoreIn);
}
}
只需绑定OC。
每当您插入/更新/删除数据库时,例如:
PDC.StoreIn.Local.Add(new Database.StoreIn());
PDC.SaveChanges();
OnPropertyChanged("OC");
使用INotifyPropertyChanged
,则在您现在更改数据库时,UI也会更改。